AfxGetMainWnd() return NULL
来源:互联网 发布:百度云免费域名 编辑:程序博客网 时间:2024/05/19 00:42
前言
手头的试验工程是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); } }}
0 0
- AfxGetMainWnd() return NULL
- AfxGetMainWnd返回NULL
- AfxGetMainWnd返回NULL
- AfxGetMainWnd()返回NULL
- AfxGetMainWnd()为什么返回NULL
- AfxGetMainWnd返回NULL也是可能的
- AfxGetMainWnd()
- request.getParameter return null
- Return a null reference
- getActiveWorkbenchWindow() return null 解决办法
- zipOpen2_64 unzOpen2_64 return NULL
- 关于return null问题
- DialogFragment getDialog() return null
- ToolProvider.getSystemJavaCompiler() Return NULL!
- LoadLibrary return null
- getActiveWorkbenchWindow() return null 解决办法
- return null; 和 return;有什么区别
- 线程 return NULL 和 pthread_exit(NULL)
- Java开发之String与StringBuffer
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 20160321 POJ1006 Biorhythms (中国剩余定理)
- 如何使用ssh框架实现用户的注销功能
- eclipse中如何查看sdk
- AfxGetMainWnd() return NULL
- return
- jumpserver 安装
- 3.5Android控件架构与自定义控件详解之自定义View(三)
- kali安装搜狗输入法
- 百钱百鸡
- 使用XStream进行XML与对象的互相转换 下划线问题
- java web :Context initialization failed
- 这里有141个创业公司的死亡案例,看鸡汤不如听教训