AfxGetMainWnd() return NULL
2016-03-22 20:35
405 查看
前言
手头的试验工程是VC6-MFC的, 现在要用到PSDK, 否则找不到API. 又不想动态加载, 于是用VS2013转了一下.
修正了编译的报错, 测试时,发现在一个线程中报错.具体如下:
* 线程是用_beginthreadex创建的
* 线程中使用了CDocument*派生类中的一个方法, 在这个方法中,向主窗体CMainFrame发送一个自定义消息. 但是AfxGetMainWnd()返回的空指针, 我又没检查, 这也能返回空, 程序就挂了.
跟了下代码, 确实返回空. 猜测是模块状态引起的问题, 在函数入口处用AFX_MANAGE_STATE(AfxGetStaticModuleState()); 切换了模块状态, 还是返回空.
在网上查了下, 他们的解决方法是 : AfxGetApp()->GetMainWnd(), 这次行了.
手头的试验工程是VC6-MFC的, 现在要用到PSDK, 否则找不到API. 又不想动态加载, 于是用VS2013转了一下.
修正了编译的报错, 测试时,发现在一个线程中报错.具体如下:
* 线程是用_beginthreadex创建的
* 线程中使用了CDocument*派生类中的一个方法, 在这个方法中,向主窗体CMainFrame发送一个自定义消息. 但是AfxGetMainWnd()返回的空指针, 我又没检查, 这也能返回空, 程序就挂了.
跟了下代码, 确实返回空. 猜测是模块状态引起的问题, 在函数入口处用AFX_MANAGE_STATE(AfxGetStaticModuleState()); 切换了模块状态, 还是返回空.
在网上查了下, 他们的解决方法是 : AfxGetApp()->GetMainWnd(), 这次行了.
void CMainDoc::UpdateAllViewsSafe() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMainFrame* pWnd = NULL; // SetModifiedFlag(TRUE); ///< 如果不需要文档序列化, 不需要设置文档修改标记 if (m_dwThreadId == GetCurrentThreadId()) { UpdateAllViews(NULL); } else { pWnd = (CMainFrame*)(AfxGetApp()->GetMainWnd()); ///< ! if (NULL != pWnd) { pWnd->PostMessage(WM_UPDATEALLVIEWSSAFE, 0, 0); } } }
相关文章推荐
- leetcode : 336. Palindrome Pairs : 拼接回文的个数
- 笔记1handler/广播/布局/AIDL
- http://blog.csdn.net/holydancer/article/details/9219333
- B. Beautiful Paintings
- 浪潮英信服务器做raid1
- layout下activity_main.xml无法显示界面出现This version of the rendering library is more recent than your versi
- HDU 4300 Clairewd’s message(KMP)
- No grammar constraints (DTD or XML Schema)(转)
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog
- Leetcode 219. Contains Duplicate II
- svn cleanup failed – previous operation has not finished 解决方法
- SVN提交报错- At least one property change failed
- INSTALL_FAILED_UPDATE_INCOMPATIBLE
- Git PUSH results in RPC failed, result=22, HTTP code = 411
- 【LightOJ】1138 - Trailing Zeroes (III)(数论,二分法)(POJ-1401类型题)
- -canOpenURL: failed for URL
- ssh-copy-id 遇到ERROR: Host key verification failed.
- ubuntu-如何解决错误-Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/Release
- [leetcode] 70. Climbing Stairs
- hdu 1867 A + B for you again