对话框隐藏的几种方法
有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响其他窗口,往往只在
托盘区显示一个图标。这些程序通常都是对话框程序,而对话框在初始化的过程上与 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
- 1
- 2
前往页