无模式对话框能不能当主窗口用? 好久不用MFC了,Dialog based工程,把DoModal生成的模式对话框换成用Create生成的无模式对话框,程序运行一闪而过就退出了,貌似没有进入消息循环? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 无模式对话框作主窗口要自己构造消息循环的MFC貌似可以用RunModalLoop CXXDlg dlg; m_pMainWnd = &dlg; dlg.Create(IDD_AA_DIALOG); dlg.ShowWindow(SW_SHOW); dlg.RunModalLoop(); CXXDlg dlg; m_pMainWnd = &dlg; dlg.Create(IDD_XX_DIALOG); dlg.ShowWindow(SW_SHOW); MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); }return FALSE;CXXDlg类重载virtual void OnCancel()虚函数void CXXDlg::OnCancel(){ PostQuitMessage(0);} 可能有IDOK按钮的话,可能OnOK虚函数中也要调用PostQuitMessage(0); 不用,CWinApp的父类CWinThread内部已经实现了消息循环,你只要先给你的App类添加一个CXXDlg* dlg;的成员变量dlg = new CXXDlg();if(dlg !=NULL){m_pMainWnd = dlg;dlg->Create(IDD_XX_DIALOG);dlg->ShowWindow(SW_SHOW);return TRUE;}else{return FALSE;}不过注意要给对话框类添加WM_CLOSE的消息映射,并在里面PostQuitMessage触发App的退出。然后在App的ExitInstance里delete dlg; 如果你的对话框里有确定之类的按钮的话,要在那个确定里面DestoryWindow销毁dlg自己,并PostQuitMessage。如果不PostQuitMessage,App是不会退出的。 列表框(CListCtrl)报表模式下选择一行为何只能选中第一列? vc中怎么没有access ()函数? 服务端连接数达到一定程度导致断网是什么原因? 经过一个下午的努力,终于勇敢的写出了我的第一个windows程序,望各位高手指点一二! ¥¥¥¥¥VC做哪方面的开发,薪水会相对较高? 还想问一下,返回一个表字段数的多少怎么办? 请问:如何更改系统默认的屏幕保护程序? 数据库错误,导致VC无法正常使用 新建一个线程与直接执行一个函数有什么区别?? 开发VxD的工具VToolsD在哪儿可下载到,谢谢. 一个网络程序的问题 MFC 单文档如何使用CListCtrl
MFC貌似可以用RunModalLoop
m_pMainWnd = &dlg;
dlg.Create(IDD_AA_DIALOG);
dlg.ShowWindow(SW_SHOW);
dlg.RunModalLoop();
m_pMainWnd = &dlg;
dlg.Create(IDD_XX_DIALOG);
dlg.ShowWindow(SW_SHOW);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return FALSE;
CXXDlg类重载virtual void OnCancel()虚函数
void CXXDlg::OnCancel()
{
PostQuitMessage(0);
}
先给你的App类添加一个CXXDlg* dlg;的成员变量dlg = new CXXDlg();
if(dlg !=NULL)
{
m_pMainWnd = dlg;
dlg->Create(IDD_XX_DIALOG);
dlg->ShowWindow(SW_SHOW);return TRUE;
}
else
{
return FALSE;
}
不过注意要给对话框类添加WM_CLOSE的消息映射,并在里面PostQuitMessage触发App的退出。
然后在App的ExitInstance里delete dlg;
如果不PostQuitMessage,App是不会退出的。