MFC 对话框不显示,返回-1 原因

Posted youxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 对话框不显示,返回-1 原因相关的知识,希望对你有一定的参考价值。

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

以上是关于MFC 对话框不显示,返回-1 原因的主要内容,如果未能解决你的问题,请参考以下文章

从 mfc 扩展 dll 导出的无模式对话框不显示

MFC Domodal 返回-1的一种情况

MFC Domodal 返回-1的一种情况

获取 MFC 对话框关闭原因

MFC:击键后对话框不显示

MFC怎么在主窗口显示后,加载子窗口