窗口打开的MessageBox未关闭的时候关闭该窗口异常退出 一个窗口A继承自CFrameWnd,该窗口调用MessageBox打开一个消息框,然后调用A的DestroyWindow,程序就崩溃了,请问什么原因,如何解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调用::MessageBox试下吧,把HWND hWnd参数传NULL试下。如果直接调用CWnd::MessageBox的话弹出窗口的父窗口就是你的CFrameWnd,所以会有问题。 DestroyWindow应该是PostMessage(WM_CLOSE, 0, 0); 问:A窗口在哪里调用MessageBox打开一个消息框A的DestroyWindow又是在哪里调用的 具体是MessageBox阻塞了窗口,还是窗口怎么退出.. AfxMessageBox,你的叙述不是很清楚 PostMessage(WM_CLOSE, 0, 0); 我来详细描述一下1、主窗体是一个SDI窗体2、新写一个CTestWnd,继承自CFrameWnd3、CMainFrame的成员变量m_pTestWnd,OnCreate时予以创建m_pTestWnd = new CTestWnd;m_pTestWnd->Create(NULL, "TEST");并且予以ShowWindow4、点击CTestWnd上某个按钮,该按钮处理函数调用了MessageBox("test");5、CMainFram处理菜单注销按钮,该按钮的处理函数调用m_pTestWnd->DestroyWindow();6、程序异常退出如果MessageBox关掉的话,则第六步的不幸就不会发生 我觉得问题归根到底不是在你的MessageBox上,应该是你非模态窗口的释放上有问题。好好在看看你处理释放的代码 文档—视图架构的类对象都是动态创建的,在销毁窗口时会自动delete this,而MessageBox是在消息响应函数中创建的,当MessageBox返回后,还要访问窗口类对象,而此时对象已经释放了,所以会产生异常。 请问:“当MessageBox返回后,还要访问窗口类对象”。。还要访问窗口类对象干什么的啊? 当点击CTestWnd上某个按钮时貌似是这样:void CTestWnd::onButtonclick(){AfxMessagebox("Hello", ID_OK);//CTestWnd被 postMessage(WM_CLOCE,0,0);了,这时CTestWnd窗口对象被释放//AfxMessagebox后面对窗口操作的代码会异常。} 继承自CFrameWnd的对象在PostNCDestroy的时候的确会delete this;,但在这之前会先销毁自己创建的所有child window,我认为MessageBox出的这个对话框应该也是其Child,照理说不应该异常。有什么解决办法吗? 楼主主要是因为MessageBox作为了窗口A的子窗口,强行退出模式窗口A引发的异常,可以参考下面的方法:用全局的MessageBox也即::MessageBox同时指定一个拥有MessageBox的窗口句柄,或者设置成NULL,默认为桌面拥有。 child window是具有WS_CHILD风格的窗口,MessageBox是popup window,不是child window,所以不会自动销毁。 问一个SendMessage的问题 请问三维仿真软件如何用VC实现?例如,仿真吊车的起吊过程?基本思路 动态的显示工具条上相应的按钮的灰显状态 消息问题 怎么回收创建的非模态对话框资源呢? 小问题! 请教一下,html中如果已知Activex的classid,有什么办法可以直接找到它? 高分请教!在MDI下如何给自己创建的FORMVIEW加上自己创建的菜单?? 请问,谁有windows消息大全一类的电子书?小弟急用!! 再问多语言开发 24岁开始学VC,晚吗? DrawText的奇怪问题
如果直接调用CWnd::MessageBox的话弹出窗口的父窗口就是你的CFrameWnd,所以会有问题。
应该是
PostMessage(WM_CLOSE, 0, 0);
A的DestroyWindow又是在哪里调用的
1、主窗体是一个SDI窗体
2、新写一个CTestWnd,继承自CFrameWnd
3、CMainFrame的成员变量m_pTestWnd,OnCreate时予以创建
m_pTestWnd = new CTestWnd;
m_pTestWnd->Create(NULL, "TEST");
并且予以ShowWindow
4、点击CTestWnd上某个按钮,该按钮处理函数调用了MessageBox("test");
5、CMainFram处理菜单注销按钮,该按钮的处理函数调用m_pTestWnd->DestroyWindow();
6、程序异常退出如果MessageBox关掉的话,则第六步的不幸就不会发生
还要访问窗口类对象干什么的啊?
{AfxMessagebox("Hello", ID_OK);//CTestWnd被 postMessage(WM_CLOCE,0,0);了,这时CTestWnd窗口对象被释放
//AfxMessagebox后面对窗口操作的代码会异常。
}
继承自CFrameWnd的对象在PostNCDestroy的时候的确会delete this;,但在这之前会先销毁自己创建的所有child window,我认为MessageBox出的这个对话框应该也是其Child,照理说不应该异常。有什么解决办法吗?
用全局的MessageBox也即::MessageBox同时指定一个拥有MessageBox的窗口句柄,或者设置成NULL,默认为桌面拥有。