DoModal失败原因

 

转自:http://hi.baidu.com/samzyn/blog/item/b712739b6f7e56b2c9eaf417.html

DoModal失败原因
1、MFC

通常对话框不显示的原因有

父窗口HWND无效

在ONINITDIALOG里用了ENDDIALOG

无效的对话框资源ID

使用没有注册的的自定义控件

对话框的某些控件创建失败,如RICHEDIT,要加上AfxInitRichEdit();

最有可能出现的是第3条,因此,又经过仔细分析了对话框中的各个资源的ID,终于找到了问题,原来是出在一个菜单栏的ID上面, 在对话框的属性的菜单栏中有一个ID(因为这个对话框是复制过来的,而且原来的对话框有菜单栏的,但是现在这个对话框没有),所以呢,ID虽然存在,但 是,现在的程序中并没有对应的资源,所以,通过讲菜单栏那项设置为空,这样,程序就OK了。

2、dll

使用:
AFX_MAMAGE_STATE(AfxGetStaticModuleState()); 
CTestDlg dlg; 
int rlt = dlg.DoModal();

Bob的问题,发现从EVC的WCE移植到VS2005下的Mobile,老会出问题,就是上面说的DoModal()返回-1,同样分析了上面的5个原因,最有可能的就是第三点,不过找了半天还是没找到问题,实在没辙,感觉对话框的边框有问题,所以就尝试着去将Border原先的"Dialog Frame"改为了"None,即不会有又上角的关闭按钮,结果果真就可以了。


如果有问题及建议,欢迎关注微信公众号:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值