2024年4月2日发(作者:)
对话框隐藏的几种方法
有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响
其他窗口,往往只在托盘区显示一个图标。这些程序通常都是对话框程序,而对话框在初
始化的过程上与SDI、MDI的初始化是不同的,对话框只需要DoModule或者是
CreateDialog等等对话框函数调用一次便可,SDI、MDI则要好几步才行。这样看来,对
话框在使用方法上面是隐藏了不少细节的,其中就没有SDI、MDI所要求的
ShowWindow(nCmdShow)这一步。因此对话框要想一运行就隐藏,并不是很直接的。
有一些方法可以做到这一点,下面我们就来看看几种方案。
1.定时器
最直观,又是最无奈的一个方法就是使用定时器。既然我们在对话框开始显示之前不
能用ShowWindow(SW_HIDE)将其隐藏,那就给一个时间让它显示,完了我们在隐藏它。
方法:
1.在OnInitDialog()函数里设置定时器:(WINDOWS API里面响应消息
WM_INITDIALOG)
SetTimer(1, 1, NULL);
2.添加处理WM_TIMER的消息处理函数OnTimer,添加代码:
if(nIDEvent == 1)
{
DeleteTimer(1);
ShowWindow(SW_HIDE);
}
这种方法的缺点是显而易见的,使用定时器,使得程序的稳定性似乎打一个折扣;窗
口是要先显示出来的,那么效果就是窗口闪了一下消失。
2.改变对话框显示状况
在对话框初始化时改变其显示属性可以让它隐藏起来。方法是调用
SetWindowPlacement函数:
BOOL CDialogExDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//DO something
WINDOWPLACEMENT wp;


发布评论