主窗口的指针变了,如何解决,求救!!! 在一个单文档程序中发现取得的主窗口指针不对了,是何原因?用法如下: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我也跟进去看了,主要问题是它取得的线程不是当前程序的线程,所以它取得的窗口指针也不对了,我想知道什么原因导致它得到的线程不对。 自绘编辑框的问题!帮帮忙 上次图片没怎么发成功,这次再麻烦高手来看看 怎样移动2张图片 一个水平移动 一个垂直移动 在应用程序类里怎么获得视图类的指针或句丙 执行任意线程,等待超时后,该怎么处理这个线程呢? 语句extern "C" AFX_EXT_API int WINAPI ExecSQL( CString strSQL ); 怎么理解?关键字AFX_EXT_API有何用? 谁能给我这样的代码。(满意的话,每人200分) 数据库类CRecorderSet出错 怎样通过文件的关联打开文件? 求教关于vista下的C盘操作. 关于UDP 多文档+ADO+SQL Server
是pMainFrame不同了,//正常
还是*pMainFrame不同了?//确实变了
主窗口的指针,如果取不到的时候,它会返回一个临时的值。而用AfxGetApp()->m_pMainWnd
或theApp.m_pMainWnd时,如果取不到,它会返回NULL,不会返回临时值。所以用AfxGetApp()->m_pMainWnd更安全.