我的DLL中有对话框资源,在打开对话框对话框是要切换资源句柄,因此,在构造对话框的时候要用到AFX_EXTENSION_MODULE中的hResource。我为了让整个项目都能使用那个静态对象,于是,我把:
static AFX_EXTENSION_MODULE ToolWindowInterfaceDLL = { NULL, NULL };
这句,放到了stdafx.h中。调试的时候在
AfxSetResourceHandle(UseResource);//(UseResource 传递的是ToolWindowInterfaceDLL.hResource的值)
这句上出错。跟踪发现,UseResource为0,再跟踪,发现。ToolWindowInterfaceDLL 的地址,出了DllMain函数之后,就立马发生了变化。请问,这是什么原因造成的?
static AFX_EXTENSION_MODULE ToolWindowInterfaceDLL = { NULL, NULL };
这句,放到了stdafx.h中。调试的时候在
AfxSetResourceHandle(UseResource);//(UseResource 传递的是ToolWindowInterfaceDLL.hResource的值)
这句上出错。跟踪发现,UseResource为0,再跟踪,发现。ToolWindowInterfaceDLL 的地址,出了DllMain函数之后,就立马发生了变化。请问,这是什么原因造成的?
定义了一个AFX_EXTENSION_MODULE 类型的变量ToolWindowInterfaceDLL,ToolWindowInterfaceDLL是静态变量,并且对其第一第二个成员赋值为NULL;
时间太长了,原因忘记了,我的解决方法:
stdafx.h中
extern AFX_EXTENSION_MODULE * MyDllExtensionModule;
stdafx.cpp中
AFX_EXTENSION_MODULE * MyDllExtensionModule ;
然后在DllMain函数中添加:MyDllExtensionModule=&ToolWindowInterfaceDLL;
使用的时候就用MyDllExtensionModule,就可以
了