主窗口的指针变了,如何解决,求救!!! 在一个单文档程序中发现取得的主窗口指针不对了,是何原因?用法如下:CMainFrame *pMainFrame = (CMainFrame * )AfxGetMainWnd(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是怎么发现的?是pMainFrame不同了,//正常还是*pMainFrame不同了?//确实变了 是pMainFrame不同了。问题是这样的:我的主窗口类中定义了一个ATL控件对象,在视类中使用到这个对象时程序崩溃了,我在调试中发现主窗口创建时的this指针与在视类中取得的pMainFrame不同,所以我觉得是主窗口的指针变了,不知道怎么解决。 你用atl后当然会有变化的 我现在用theApp.m_pMainWnd是可以的,不过用AfxGetMainWnd()还是不行,但是在另一台机子上运行确是好的,郁闷。希望哪位能讲讲原理,谢谢! AfxGetMainWnd()和AfxGetApp()->m_pMainWnd是不同的,我以前也碰到了这个问题。我看了一下MFC中AfxGetMainWnd和AfxGetApp的实现我就知道了。AfxGetMainWnd返回的不一定就是你的主窗口的指针,如果取不到的时候,它会返回一个临时的值。而用AfxGetApp()->m_pMainWnd或theApp.m_pMainWnd时,如果取不到,它会返回NULL,不会返回临时值。所以用AfxGetApp()->m_pMainWnd更安全. AfxGetMainWnd我也跟进去看了,主要问题是它取得的线程不是当前程序的线程,所以它取得的窗口指针也不对了,我想知道什么原因导致它得到的线程不对。 求大神解决一下这个问题 请求资源 新手提问 严重批评CSDN总是服务器忙或无法登陆!!!! 请高手帮忙解决一个关于ip rawpacket的问题 请教:如何修改一个文件中某行字符串内容 请问:在VC内如何制作边缘光滑的彩色圆形按钮,关键是“边缘光滑” MFC 把列表控件listCtrl的各个变量的值写入到mysql数据库中 关于图像处理问题 *** 挑 战 金 山 词 霸 *** 关于UDP 多文档+ADO+SQL Server
是pMainFrame不同了,//正常
还是*pMainFrame不同了?//确实变了
主窗口的指针,如果取不到的时候,它会返回一个临时的值。而用AfxGetApp()->m_pMainWnd
或theApp.m_pMainWnd时,如果取不到,它会返回NULL,不会返回临时值。所以用AfxGetApp()->m_pMainWnd更安全.