首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

费解的:AfxGetApp(),该如何处理

2012-01-13 
费解的::AfxGetApp()今天在一个动态链接库里多次调用::AfxGetApp(),第一次用来设置CMyApp的成员变量值,第

费解的::AfxGetApp()
今天在一个动态链接库里多次调用::AfxGetApp(),第一次用来设置CMyApp的成员变量值,第二次用来取出设置好的值,但郁闷的时候来了,始终取不到设置好的值。我发现两次使用::AfxGetApp()得到的指针值竟不相等,例如,第一次是   0x0042aae8,第二次变成了0x1002cb98。当然,我说的是一次运行,在这个过程中,没有发生动态链接库的卸载和重新加载。

我是在动态链接库里使用的::AfxGetApp(),如果说它返回的不是指向动态链接库内部申明的CMyApp   theApp对应指针,那它就不可能访问对应的成员变量(调用动态链接库主程序类是没有这个成员的),但既然返回的是一个东西,为什么指针却又不一样?

[解决办法]
何必这么麻烦,你把app指针传进去好了。

[解决办法]
AfxGetApp()取到的指针跟模块的上下文环境有关。
当在dll中使用了AFX_MANAGE_STATE(AfxGetStaticModuleState())宏后,AfxGetApp()取到的是dll的
不要依赖于AfxGetApp(),当有这种需求时,向dll传入HWND
[解决办法]
AfxGetApp()是通过AfxGetModuleState()-> m_pCurrentWinApp获取的,也就不ouyh12345(五岭散人)的话了。
另外,lz可以自己对比下&theApp这个地址和AfxGetApp()返回值在各种状况下的异同

热点排行