![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Win32 & C++
godwater8
这个作者很懒,什么都没留下…
展开
-
[转载]VC++,掀起你的盖头来——谈VC++对象模型(美)简.格雷(程化 译)
VC++,掀起你的盖头来——谈VC++对象模型(美)简 格雷程化 译原文译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认转载 2006-09-05 18:12:00 · 1033 阅读 · 0 评论 -
Accessing the current module's HINSTANCE from a static library
If youre writing a static library, you may have need to access the HINSTANCE of the module that you have been linked into. You could require that the module that links you in pass the HINSTANCE to a转载 2007-06-19 18:50:00 · 774 阅读 · 0 评论 -
获取显存大小和可用显存大小
#include #pragma comment(lib, "Strmiids.lib") static void LogOutVideoMemory() { LPDIRECTDRAW2 lpdd; HRESULT ddrval; CoInitialize(NULL); ddrval = CoCreateInstance(CL原创 2007-08-28 10:58:00 · 3365 阅读 · 4 评论 -
利用FreeLibrary进行内存回收
适用条件:1. 项目中使用了会导致内存泄露的外界模块而且没有源码。2. 程序需要长期运行,所以会导致内存堆积。3. 在整个程序运行周期中,有一定间隙不会使用存在泄露的模块(这个机会可以自己制造,比如暂时中止一下对模块的使用)若满足以上所有条件,那么就把工程的c/c++ / code generation / runtime library 属性改为Multi-threaded(/MT),如果为de原创 2007-08-28 11:55:00 · 1662 阅读 · 1 评论 -
One Day Working for a Bug
This morning a bug was reported to me. I tried to find what cause it, and till this afternoon I found it.The bug was caused by a static varient in a member function. It stay on FALSE from the last c原创 2007-01-12 23:22:00 · 555 阅读 · 0 评论 -
C++基本功:全面掌握const、volatile和mutable关键字
C++基本功:全面掌握const、volatile和mutable关键字 选择自 RedStar81 的 Blog C++程式设计过程中,const的使用可以频度是非常高的.它在保证程式安全方面起到了不可估量的作用.用一句话来表达最确切不过了:”小兵立大功”. 有了const,那么mutable当然缺不了. 然作为const的同胞兄弟,volatile却在很多人的视野中消失转载 2006-12-30 10:41:00 · 799 阅读 · 1 评论 -
如何获取程序文件的路径
使用APIDWORD GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize ); hModule 为NULL则可以获得当前模块的full path.见MSDN如下:GetModuleFileName The GetModuleFileName function retrieves the fully qual原创 2006-08-29 11:51:00 · 800 阅读 · 0 评论 -
_com_ptr_t智能指针的释放问题
今天写程序遇到一个奇怪的内存问题, 显示不可read:"0x0039c365" 指令引用的 "0x010fa3e8" 内存。该内存不能为 "read"。检查代码发现有个Com指针忘了释放,虽然智能指针会自动释放,不过在它自动释放前调用了CoUninitialize()的话,释放的时候就会产生错误。所以在调用CoUninitialize()前,一般要把NULL赋植给智能指针进行析构。原创 2006-08-28 17:44:00 · 1379 阅读 · 0 评论 -
不同模块间对象的传递和释放
今天下午我在释放一个dll中动态分配的内存的时候,居然发生错误,释放失败,回想一下以前似乎也遇到过,解决方法就是哪儿创建的在哪儿释放。VTK中的做法是使用静态的New()方法构造,Release()方法释放。如:class Obj{public: static Obj* New() { return new Obj(); } void Release()原创 2006-08-21 23:26:00 · 904 阅读 · 0 评论 -
std::fstream在VC2003.net中的使用问题
在支持MFC的Win32控制台工程中一般有如下宏#ifdef _DEBUG#define new DEBUG_NEW#endif 定义了该宏会导致include fstream头文件失败,如下:d:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include/fstream(465) : error C2061: syntax e原创 2006-08-18 11:53:00 · 1224 阅读 · 1 评论 -
选择文件夹对话框
直接调用API实现,写Win32程序时比较方便。bool SelectForder(const char * title, char* path){ BROWSEINFO bw; ITEMIDLIST* il; memset(&bw, 0, sizeof(BROWSEINFO)); bw.hwndOwner = NULL; bw.lpszTitle = title; il = SHBro原创 2006-08-17 00:22:00 · 630 阅读 · 0 评论 -
使用GetOpenFileName打开多个文件
void GetOpenFileName_sample() { TCHAR str[320000] = {0}; TCHAR szFile[MAX_PATH+1024]; TCHAR *p = NULL; TCHAR Name[MAX_PATH]; TCHAR szTmp[MAX_PATH]; int i=1; memset(szFile,0, sizeof(szFile)); OPENFILEN转载 2006-08-17 00:15:00 · 1301 阅读 · 0 评论 -
跨DLL的全局对象
如果一个项目中由多个dll组成,需要使用一个全局对象,DLL和主程序都要用到。我想到如下2中方法:1)建立一个新的DLL或者在某个DLL中导出一个对象指针2)使用FileMapping,CreateFileMapping可以建立一个命名的内存区域,可以实现多个进程通过名字进行访问在我目前所作的项目中,我选择了后者我使用一个static的方法封装了这个FileMapping的操作,访问变成了简单的原创 2006-10-10 22:45:00 · 1085 阅读 · 0 评论