一个基于对话框的程序如何隐藏主对话框? 现用AppWizard做一个对话框,想隐藏这个主对话框,应如何操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上面的方法加在哪里,在OnInitDialog中根本不行。 OnInitDialog时都还没有显示出来呢!当然不能加在那里了,假如要一开始隐蔽的话可以在PreCreateWindow里操作。cs&=~WM_VISIBLE int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // hide our app AfxGetApp()->m_nCmdShow = SW_HIDE; return 0;} 在OnInitDialog中return TRUE前加入WINDOWPLACEMENT wp;wp.length=sizeof(WINDOWPLACEMENT);wp.flags=WPF_RESTORETOMAXIMIZED;wp.showCmd=SW_HIDE;SetWindowPlacement(&wp); 改写CAPP::InitInstance()将其中的有模式对话框改为无模式对话框:CDialog dlg;dlg.create();dlg.ShowWindow(SW_HIDE); 我想问问,如果我想在弹出模态对话框之后再隐藏主DIALOG,该怎么办?而不是一开始就隐藏。 楼上的做好是不行的:CApp::InitInstance(){...... CMyDlg *pMainDlg = new CMyDlg; if ( pMainDlg == NULL ) return FALSE; m_pMainWnd = pMainDlg; pMainDlg->Create( IDD_MYDLG , NULL ); pMainDlg->UpdateWindow(); pMainDlg->ShowWindow(TRUE); // or FALSE return TRUE;}don't forget release dlg resource of the pointer 那在弹出模式对话框的地方假设主对话框的OnButton1()是对应的函数,则:OnButton1(){ this->ShowWindow(SW_HIDE);//隐藏主对话框 CXXXDlg dlg; dlg.OoModal();//显示模式对话框 this->ShowWindow(SW_SHOW);//模式对话框结束后恢复显示主对话框} 标准的隐藏DIALOG的方法如下1. 如何有效地使初始窗口不显示当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:(1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { if(!visible) lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);}(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;ShowWindow(SW_SHOW); 响应WM_NCPAINT ShowWindow(SW_HIDE); 打开class wizard在class info选项卡上在message filter上选择windows然后在messagemap映射wm_ncpaint消息加入ShowWindow(SW_HIDE);就可以 编写一段代码 运行直接跳过了生成的窗口 下面的输出信息如下 求指教 ATL的疑问 如何在CView 里创建CheckBox? 单文档程序能打开多种类型的文档么 怎么样才以清除静态文本框中的文字? 怎么样得到内存大小? 如何实现在用户打开我的网页时自动下载一个应用程序,并安装? 如果在ActiveX中调用Variant! 关于c运行库中的strftime问题(bug?) 如何比较时间,只比较小时和分钟 100分问SAX2(MS XML)如何处理中文 C语言中使用ADO.recordset 查询数据表信息, 如何得到列的字段类型信息?
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// hide our app
AfxGetApp()->m_nCmdShow = SW_HIDE;
return 0;
}
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
将其中的有模式对话框改为无模式对话框:
CDialog dlg;
dlg.create();
dlg.ShowWindow(SW_HIDE);
而不是一开始就隐藏。
{
...
... CMyDlg *pMainDlg = new CMyDlg;
if ( pMainDlg == NULL )
return FALSE; m_pMainWnd = pMainDlg;
pMainDlg->Create( IDD_MYDLG , NULL );
pMainDlg->UpdateWindow();
pMainDlg->ShowWindow(TRUE); // or FALSE return TRUE;
}don't forget release dlg resource of the pointer
{
this->ShowWindow(SW_HIDE);//隐藏主对话框
CXXXDlg dlg;
dlg.OoModal();//显示模式对话框
this->ShowWindow(SW_SHOW);//模式对话框结束后恢复显示主对话框
}
1. 如何有效地使初始窗口不显示
当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:
(1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;
(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if(!visible)
lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);
}(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;
ShowWindow(SW_SHOW);
ShowWindow(SW_HIDE);
在class info选项卡上在message filter上选择windows
然后在messagemap映射wm_ncpaint消息
加入
ShowWindow(SW_HIDE);就可以