mfc隐藏对话框的问题

做了一个小程序,需要对话框隐藏的。于是在OnInitDialog()中用以下代码隐藏BOOLCTestDlg::OnInitDialog(){CDialogEx::OnI... 做了一个小程序,需要对话框隐藏的。于是在 OnInitDialog()中用以下代码隐藏
BOOL CTestDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
//启动隐藏主窗口和任务栏
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); //隐藏任务栏
//对话框隐藏
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
......
}
实测结果 大多情况下都是隐藏成功的
但是部分机器使用时不隐藏
请问这是何种原因
展开
 我来答
bhtzu
2014-10-15 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4134万
展开全部
这个应该是MFC基于对话框程序的主窗口对话框吧。
一般MFC对话框程序的主窗口,是DoModal模态创建的,模态窗口的隐藏本身就是不推荐使用的。
建议,在InitInstance里面,将对话框改为非模态创建,或者,改成SDI单文档基于CFormView程序,隐藏方式直接在InitInstance里面ShowWindow(SW_HIDE);即可。
更多追问追答
追问
能详细说说怎么在InitInstance设置为非模态创建么
VS2010自动创建的代码的确是模态的 用了 dlg.DoModal();
追答

需要改多行代码,大致上就是:

CxxxDlg *dlg;//要用指针
dlg = new CxxxDlg;
pMainWnd = dlg;//no &
dlg.CreateWindow(...);
dlg.ShowWindow(SW_HIDE);//这里就直接隐藏了

具体百度“VC非模态对话框”,文章和例子很多。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式