求助:关于子线程创建非模态对话框的问题 CWinThread::m_pMainWnd = m_pDlg;return TRUE; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在子线程创建窗口,必须创建消息循环,因为Window的消息循环只投递消息给该线程创建的窗口因此,创建子线程必须有一个标准Window消息循环 打开的对话框中不是有windows消息循环处理的吗? domodal才有消息循环,showWindow的没有,你要自己创建 问题解决了,原因是对话框的默认关闭方式模式对话框关闭,而现在是以非模式对话框方式打开,所以关闭的时候要把模式对话框的处理屏蔽。解决方案如下:重写对话框的PostNcDestroy,OnClose,OnDestroy,具体代码如下:void CMyDlg::PostNcDestroy(){ // TODO: 在此添加专用代码和/或调用基类 delete this; CDialog::PostNcDestroy();}void CMyDlg::OnClose(){ // TODO: 在此添加消息处理程序代码和/或调用默认值 this->DestroyWindow(); /*CDialog::OnClose();*/}void CMyDlg::OnDestroy(){ CDialog::OnDestroy(); PostQuitMessage(0); // TODO: 在此处添加消息处理程序代码}另外默认的Ok,Cancel按钮换成void CMyDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 //OnOK(); this->DestroyWindow();}void CMyDlg::OnBnClickedCancel(){ // TODO: 在此添加控件通知处理程序代码 //OnCancel(); this->DestroyWindow();} Blt()中断?? vc++ 2005 如何字母轉字編碼?? 如果不让InstallShield自动安装? 请教,如何获取系统安装目录,如:c:\winnt 我的第一个VC小程序,破处! 如何实现半透明窗口?就像FlashGet的下载进度窗口那样的。 请问怎样实现TableView? 怎样定义自己的消息? VC中对话框最小化最大化按钮提示怎么实现,需源码 VC笨问题:我在对话框放了12个Radio Button,怎样将它们分成3组 请问GDI+,OPENCV,OPENGL各自的特点和应用是什么,它们有什么区别? 我在win7的64位虚拟机上安装了VS2008,然后向编译64位的程序
在子线程创建窗口,必须创建消息循环,因为Window的消息循环只投递消息给该线程创建的窗口因此,创建子线程必须有一个标准Window消息循环
domodal才有消息循环,showWindow的没有,你要自己创建
重写对话框的PostNcDestroy,OnClose,OnDestroy,具体代码如下:void CMyDlg::PostNcDestroy()
{
// TODO: 在此添加专用代码和/或调用基类
delete this;
CDialog::PostNcDestroy();
}
void CMyDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
this->DestroyWindow();
/*CDialog::OnClose();*/
}void CMyDlg::OnDestroy()
{
CDialog::OnDestroy();
PostQuitMessage(0);
// TODO: 在此处添加消息处理程序代码
}另外默认的Ok,Cancel按钮换成
void CMyDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//OnOK();
this->DestroyWindow();
}void CMyDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
//OnCancel();
this->DestroyWindow();
}