DoModal失败原因
1、MFC
通常对话框不显示的原因有
1 父窗口HWND无效
2 在ONINITDIALOG里用了ENDDIALOG
3 无效的对话框资源ID
4 使用没有注册的的自定义控件
5 对话框的某些控件创建失败,如RICHEDIT,要加上AfxInitRichEdit(); (我就是这个原因,加了richedit控件,没有调用这个函数)
最有可能出现的是第3条,因此,又经过仔细分析了对话框中的各个资源的ID,终于找到了问题,原来是出在一个菜单栏的ID上面, 在对话框的属性的菜单栏中有一个ID(因为这个对话框是复制过来的,而且原来的对话框有菜单栏的,但是现在这个对话框没有),所以呢,ID虽然存在,但 是,现在的程序中并没有对应的资源,所以,通过讲菜单栏那项设置为空,这样,程序就OK了。
writeFlash依赖于ResZH,在这个已有有工程里面,新建了一个窗口,调用:
int nResponse = dlg.DoModal();后发现返回为-1,
不能弹出显示对话框,后来核对了一下resource.h,本工程里面有两个,对于同一个宏
#define IDD_LOGIN_DIALOG 178
#define IDD_LOGIN_DIALOG 177
两个值不一致。改为一致就可以了。
(MFC 资源管理器删除控件是不会更改resource.h的,需要手动删除)
参考:
https://blog.csdn.net/bookish_2010_prj/article/details/5535757
原文地址:https://www.cnblogs.com/youxin/p/10695009.html
时间: 2024-10-08 21:54:21