程序没有响应时,如何处理End Program系统对话框的弹出
程序没有响应时,如何避免End Program系统对话框的弹出
MFC编写以下程序,主对话框如下:

点击Open按钮,显示如下子对话框(采用非模态显示)

Open的相关代码如下:
在主对话框的OnInitDialog函数中创建子对话框
m_dlg.Create(ResponseDlg::IDD);
m_dlg.CenterWindow();
在Open按钮响应函数中显示子对话框
m_dlg.ShowWindow(SW_SHOWNORMAL);
主对话框的确定按钮编写一个占用时间较长的工作代码,例如一个为时特别长的循环程序
问题:启动程序后,点击open显示子对话框,然后,点击确定按钮,启动循环程序,最后,用鼠标快速频繁点击子对话框的关闭按钮(标题上的叉叉),一会儿会显示End Program系统对话框,如下图:

如果用鼠标快速频繁点击子对话框的OK按钮,就不会显示End Program系统对话框,只是在子对话框的标题显示“NO Response”
如何做,可以使得:用鼠标快速频繁点击子对话框的关闭按钮(标题上的叉叉),和OK按钮一样,不显示End Program系统对话框,只在子对话框的标题显示“NO Response”
------解决方案--------------------
那就响应OnClose,然后将默认的调用基类的OnClose去掉,增加CDialog::OnOK()好了。
------解决方案--------------------
你这个是非模态的对话框
点击open调用了create
而点击xx按钮 相当于调用了showwindow(SW_HDIE)
你应该重载m_dlg的OnCancel虚函数 里面输入
DestroyWidow代码 就好了
------解决方案--------------------
太频繁,对话框处理不过来消息或导致对话框失去响应等吧。
或者你可以当点击了以后,在处理完前禁用按钮等,防止下次点击
------解决方案--------------------
VC6上 只是 ‘X' 可以响应, 而且 也 不是 对话框的 响应。
OK 建 和 Cancel 是 不 响应的 !。
楼主 是 死循环;
OnOK :
while(1);
------解决方案--------------------
你这个是在调试模式下弹出的吧?
------解决方案--------------------
这是系统检测到 进程无 响应的 结果。 不是 应用程序 轻易可控制的。
MFC编写以下程序,主对话框如下:
点击Open按钮,显示如下子对话框(采用非模态显示)
Open的相关代码如下:
在主对话框的OnInitDialog函数中创建子对话框
m_dlg.Create(ResponseDlg::IDD);
m_dlg.CenterWindow();
在Open按钮响应函数中显示子对话框
m_dlg.ShowWindow(SW_SHOWNORMAL);
主对话框的确定按钮编写一个占用时间较长的工作代码,例如一个为时特别长的循环程序
问题:启动程序后,点击open显示子对话框,然后,点击确定按钮,启动循环程序,最后,用鼠标快速频繁点击子对话框的关闭按钮(标题上的叉叉),一会儿会显示End Program系统对话框,如下图:
如果用鼠标快速频繁点击子对话框的OK按钮,就不会显示End Program系统对话框,只是在子对话框的标题显示“NO Response”
如何做,可以使得:用鼠标快速频繁点击子对话框的关闭按钮(标题上的叉叉),和OK按钮一样,不显示End Program系统对话框,只在子对话框的标题显示“NO Response”
------解决方案--------------------
那就响应OnClose,然后将默认的调用基类的OnClose去掉,增加CDialog::OnOK()好了。
------解决方案--------------------
你这个是非模态的对话框
点击open调用了create
而点击xx按钮 相当于调用了showwindow(SW_HDIE)
你应该重载m_dlg的OnCancel虚函数 里面输入
DestroyWidow代码 就好了
------解决方案--------------------
太频繁,对话框处理不过来消息或导致对话框失去响应等吧。
或者你可以当点击了以后,在处理完前禁用按钮等,防止下次点击
------解决方案--------------------
VC6上 只是 ‘X' 可以响应, 而且 也 不是 对话框的 响应。
OK 建 和 Cancel 是 不 响应的 !。
楼主 是 死循环;
OnOK :
while(1);
------解决方案--------------------
你这个是在调试模式下弹出的吧?
------解决方案--------------------
这是系统检测到 进程无 响应的 结果。 不是 应用程序 轻易可控制的。