1.基于对话框的程序
我在论坛上看到有人说在OnInitDialog()中加上ShowWindow(SW_HIDE)对话框便不出现了,其实是不可行的。至于原因,我认为是系统是在OnInitDialog()后调用ShowWindow(SW_SHOW)让对话框显示的.可以添加下面代码:
CXXDlg::OnInitDialog()
{
...
Sleep(5000);
return TRUE;
}
可以发现5秒后对话框才显示出来.至于在何时调用的我也不清楚,但是我们可以在OnPaint()中加上ShowWindow(SW_HIDE),来达到隐藏的目的.不过使用的这种方法,会有一点闪烁.另外一种方法就是在OnInitDialog()中使用SetWindowPlacement()
GetWindowPlacement(&m_wp); //恢复时用
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉.
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
还有一种更简单的方法:在OnInitDialog()中调用下面代码.
SetWindowPos(&wndTop,0,0,0,0,NULL);
2.基于单文档的程序
我们一般采用的方法就是将InitInstance()中的:
CXXApp::InitInstance()
{ <

本文介绍了如何在VC程序启动时隐藏对话框和单文档界面,以及从任务栏中移除图标。对于基于对话框的程序,可以通过在OnInitDialog()中利用SetWindowPlacement()或SetWindowPos()实现隐藏。对于基于单文档的程序,可以通过修改InitInstance()中的ShowWindow()调用来隐藏,并使用ITaskbarList接口删除任务栏图标。此外,还讨论了使用定时器、改变窗口显示状况和不绘制窗口等方法的优缺点。
最低0.47元/天 解锁文章
2498

被折叠的 条评论
为什么被折叠?



