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);
......
}
实测结果 大多情况下都是隐藏成功的
但是部分机器使用时不隐藏
请问这是何种原因 展开
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);
......
}
实测结果 大多情况下都是隐藏成功的
但是部分机器使用时不隐藏
请问这是何种原因 展开
1个回答
展开全部
这个应该是MFC基于对话框程序的主窗口对话框吧。
一般MFC对话框程序的主窗口,是DoModal模态创建的,模态窗口的隐藏本身就是不推荐使用的。
建议,在InitInstance里面,将对话框改为非模态创建,或者,改成SDI单文档基于CFormView程序,隐藏方式直接在InitInstance里面ShowWindow(SW_HIDE);即可。
一般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非模态对话框”,文章和例子很多。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询