在运行MFC程序的Release版本时,断点断在"INT_PTR nResponse = dlg.DoModal();"这句话上的处理
来源:互联网 发布:豆豆美妆馆扒皮 知乎 编辑:程序博客网 时间:2024/05/22 13:58
今天在运行Release版本程序时,发现如图显示的错误
经过调试发现,会断在"INT_PTR nResponse = dlg.DoModal();"再经过F11进入代码内部,发现,是断在了"CreateDlgIndirect"这个函数里面。
从网上查阅资料,找到了解决方法。
自己便整理了错误原因。
这个"CreateDlgIndirect"这个函数做了好多事情,包括:创建对话框的预处理。
借用MFC代码中的注释来说明吧(以下代码摘自MFC):#ifndef _AFX_NO_OCC_SUPPORT // separately create OLE controls in the dialog template if (pOccManager != NULL) { if (!SetOccDialogInfo(&occDialogInfo)) return FALSE; lpDialogTemplate = pOccManager->PreCreateDialog(&occDialogInfo, lpDialogTemplate); } if (lpDialogTemplate == NULL) return FALSE;#endif //!_AFX_NO_OCC_SUPPORT意思是:对话框模板中的OLE控件要分离出来然后创建。
经过调试之后,发现因为在代码中添加了ActiveX控件,确没有用到。所有果断的删去了。
结论:
在动态库dll中生成对话框,如果其中包括了ActiveX控件,在创建对话框失败时,需要考虑在CApp::InitInstance()中添加以下语句
OleInitialize(NULL) & AfxEnableControlContainer()
阅读全文
3 0
- 在运行MFC程序的Release版本时,断点断在"INT_PTR nResponse = dlg.DoModal();"这句话上的处理
- 主界面在程序运行时隐藏 DoModal的二三事
- VS2013生成Release版本MFC程序在其他机器上运行
- VS2012 MFC程序生成Release版本在其他机器上运行
- 让VC编译的Release版本程序在其他机器上顺利运行
- 让VS编译的Release版本程序在其他机器上顺利运行
- visual c 6.0 编写串口程序release版本在非vc电脑上无法运行的解决方法
- visual c 6.0 编写串口程序release版本在非vc电脑上无法运行的解决方法
- MFC消息处理机制,Dlg程序的消息循环
- 关于dlg.DoModal()==IDOk的理解
- mfc编写的程序如何在别人机器上运行?
- MFC 在其他的类中引用Dlg类方法
- 在mfc的dlg.cpp引用动态链接库方法
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行(转)
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- MFC 中dlg.DoModal()对话框移动到指定区域显示的一个解决办法
- 控制台应用程序调用MFC DLL产生的对话框,解决对话框dlg.DoModal报错问题
- 十分钟搞定pandas(Python数据预处理库)
- 安装svn插件集成myeclipse2014的两种方式
- 从零开始写javaweb框架笔记15-搭建轻量级JAVAWEB框架-实现依赖注入功能
- 单片机Microcontrollers
- Win7系统安装软件提示"不是有效的win32应用程序"的解决方法
- 在运行MFC程序的Release版本时,断点断在"INT_PTR nResponse = dlg.DoModal();"这句话上的处理
- 微擎we7模块和模板安装方法
- 第一个MyBatis程序
- PCB emi设计要点
- freemaker模板中long值默认用,号分隔问题
- VM虚拟机下安装Centos7.0图文教程
- 从零开始写javaweb框架笔记16-搭建轻量级JAVAWEB框架-加载Controller,初始化框架
- git命令使用
- Android Studio开过中常用的插件,大大提高开发效率!(持续更新中)