关于程序隐藏的实现方法。(请看清具体问题)
就我所知,
一、使用ShowWindow(SW_HIDE)
对对话框程序和非对话框程序都适用,
但存在“拖泥带水”的现象。
二、使用移动程序界面出可视区域的办法
对对话框程序和非对话框程序都适用,
三、所谓“标准”的隐藏方法。
现在只在Dialog程序中实现。
对于非对话框程序----如SDI,使用同样的策略,并不成功。
-----------------------------------------------------------
现在的问题:
使用类似“标准”的对话框隐藏方法(见下面)
在SDI中实现。
标准的隐藏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);
-------------------------------
线索:
1、友人说:
OnWindowPosChanging是CWnd的成员,所以从CWnd派生的类应该都可以
但我的测试把同样的方法用于CMainFrame(CWnd派生),可是有异常错误!
说this变量需要一个堆栈格式,我迷惑,
2、友人说:
同样的方法在-------直接在OnSize中加入类似判断就搞定。
但没有成功。