CE6 mfc程序非模态对话框不能通过对话框上的按钮关闭

时间:2021-01-12 17:40:23
ok6410 mfc程序非模态对话框不能通过对话框上的按钮关闭


用如下代码1建立的非模态对话框不能通过对话框上的按钮关闭 而用代码2建立的模态对话框则可以。这是为什么啊??

//代码1
void Cok6410keyDlg::OnBnClickedButtonCloseKey()//button 单击事件
{
 CPowerDownDlg *MyDialog = new CPowerDownDlg(this);  //建立非模态对话框对象指针
 MyDialog->Create(IDD_DIALOG1);//创建非模态对话框
 MyDialog->ShowWindow(SW_RESTORE);//显示对话框
}

//代码2
void Cok6410keyDlg::OnBnClickedButtonCloseKey()//button 单击事件
{
 CPowerDownDlg MyDialog; //定义模态对话框对象
 MyDialog.DoModal(); //显示模态对话框
}

8 个解决方案

#1


如果你要创建非模式对话框的话,要关闭对话框,得添加WM_CLOSE消息,然后添加DestroyWindow()这一句代码就ok了

#2


只看到显示的代码,没看见关闭的代码啊

#3


chievement  但我在桌面上用vc++做的程序 不需要
 WM_CLOSE消息,DestroyWindow()代码 也能关闭啊

#4


引用 3 楼 w22net 的回复:
chievement  但我在桌面上用vc++做的程序 不需要
 WM_CLOSE消息,DestroyWindow()代码 也能关闭啊


在CE下,千万不要去和PC上对比
本来就是两个不一样的东西,只是有点像

#5


楼主是做嵌入式CE的MFC吧,我在EVC里做过试验了,如果楼主是VS的话我不敢保证了,但是EVC我还是可以保证的,楼主要是觉得我的回复不正确,楼主不妨试试!

#6


是啊  在VC++6.0里是这样的不需要添加WM_CLOSE消息,但是EVC还是和VC++6.0有差别的

#7


确实 在ce 里需要DestroyWindow()函数,但我试了 在WM_CLOSE消息处理里调用也不行,在ok 和cancel button的事件程序里是可以的 谢谢chievement 给分

#8


具体怎么实现的么,我现在也遇到同样的问题

#1


如果你要创建非模式对话框的话,要关闭对话框,得添加WM_CLOSE消息,然后添加DestroyWindow()这一句代码就ok了

#2


只看到显示的代码,没看见关闭的代码啊

#3


chievement  但我在桌面上用vc++做的程序 不需要
 WM_CLOSE消息,DestroyWindow()代码 也能关闭啊

#4


引用 3 楼 w22net 的回复:
chievement  但我在桌面上用vc++做的程序 不需要
 WM_CLOSE消息,DestroyWindow()代码 也能关闭啊


在CE下,千万不要去和PC上对比
本来就是两个不一样的东西,只是有点像

#5


楼主是做嵌入式CE的MFC吧,我在EVC里做过试验了,如果楼主是VS的话我不敢保证了,但是EVC我还是可以保证的,楼主要是觉得我的回复不正确,楼主不妨试试!

#6


是啊  在VC++6.0里是这样的不需要添加WM_CLOSE消息,但是EVC还是和VC++6.0有差别的

#7


确实 在ce 里需要DestroyWindow()函数,但我试了 在WM_CLOSE消息处理里调用也不行,在ok 和cancel button的事件程序里是可以的 谢谢chievement 给分

#8


具体怎么实现的么,我现在也遇到同样的问题