关于MDI的窗口关闭问题(这是我在CSDN上问的第三个问题,前两个无人回答,请大侠们给个面子,就回答一次吧) 我想在子窗口关闭时询问用户是否保存文件,我在子框架的OnClose中很容易就实现了。但当直接关闭主框架时,子框架的OnClose函数并没有被调用,而且在主框架的OnClose中直接调用子框架的OnClose却会出错(此时已经不能阻止关闭过程了)。请问我该怎么办?注意:我没有使用文档-视模式。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在主框架的OnClose中判断子窗口是否打开,如果打开,将其关闭,不要直接调用子窗口的OnClose函数,可以在子窗口中另写一个方法实现其关闭。(此时已经不能阻止关闭过程了)? 应该是可以的,直接RETURN,程序就不会关闭。 而且在主框架的OnClose中直接调用子框架的OnClose却会出错(此时已经不能阻止关闭过程了)。///////////////////////////////////////////////////////////////请问你是如何做的呢?? void CMainFrame::OnClose() { // TODO: Add your message handler code here and/or call default MessageBox("CMainFrame::OnClose()", "Close"); CMDIChildWnd *pActiveWnd = MDIGetActive(); while( NULL != pActiveWnd ){ pActiveWnd->SendMessage(WM_CLOSE); pActiveWnd = MDIGetActive(); } CMDIFrameWnd::OnClose();} 我是要判断所有的子窗口能否关闭,如果有一个子窗口不能关闭则取消关闭过程。如果直接在主框架中return,即不调用CMDIFrameWnd::OnClose();的话,此时的确程序没有关闭,但子窗口的窗口句柄已经为NULL了。我说的错误就是指这个错误。 qiwei(破框儿) 的程序应该可以用吧,你先试试 1.直接在主框架中return,2.即不调用CMDIFrameWnd::OnClose();的话////////////////////////////////////////////////////////////注意:1和2这是两码事,不可等同!! 64位系统下 DCOM 的问题 对做技术的一些看法 新手问题。。。 求助!有关套接字和数据库的知识!急用!!!! 招聘高级软件工程师一名! 菜鸟问题,VB中怎样使用C写的DLL中的全局变量 如何实现这样的问题! 如何隐藏一个dos窗口(console)? 100分!(可加) geticon与loadicon区别 怎么用CSerialPort类创建大于大于10的串口号 3000紧急求救几道题目的答案 关于ctreeview的小问题
(此时已经不能阻止关闭过程了)? 应该是可以的,直接RETURN,程序就不会关闭。
请问你是如何做的呢??
{
// TODO: Add your message handler code here and/or call default
MessageBox("CMainFrame::OnClose()", "Close");
CMDIChildWnd *pActiveWnd = MDIGetActive();
while( NULL != pActiveWnd ){
pActiveWnd->SendMessage(WM_CLOSE);
pActiveWnd = MDIGetActive();
} CMDIFrameWnd::OnClose();
}
如果直接在主框架中return,即不调用CMDIFrameWnd::OnClose();的话,此时的确程序没有关闭,但子窗口的窗口句柄已经为NULL了。我说的错误就是指这个错误。
注意:1和2这是两码事,不可等同!!