基于MFC对话框隐藏的方法
2014-05-31 22:47
295 查看
基于MFC对话框隐藏的方法
2009-08-14 14:32:14| 分类: 默认分类|举报|字号 订阅1.定时方法
a.在OnInitDialog里设置一定时器
SetTimer(0);
b.在WM_TIMER里
ShowWindow(SW_HIDE);
KillTimer(0);
这种方法的缺点是显而易见的,使用定时器,使得程序的稳定性似乎打一个折扣;窗口是要先显示出来的,那么效果就是窗口闪了一下消失。
2.改变对话框显示属性可以让它隐藏起来
在OnInitDialog里
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp); //该函数设置指定窗口的显示状态和恢复,最大化,最小化位置
(本人强烈推荐此方法)
3.在WM_NCPAINT里
static int i = 2;
if(i > 0)
{
i --;
ShowWindow(SW_HIDE);
}
else
CDialog::OnNcPaint();
注意:为什么要定义静态变量i而且设其值为2呢?
我们只要窗口隐藏第一次,所以定义这个变量可以判断是否时首次显示窗口。当程序开始运行时,系统发送(SendMessage)WM_NCPAINT消息,此时程序的窗口边框应该被显示,但是此时我们没有作任何显示的操作,而是将窗口隐藏,ShowWindow(SW_HIDE)将把窗口的WS_VISIBLE属性去掉,继续执行,程序将检查WS_VISIBLE属性,如果没有则显示窗口,所以又发送了一个WM_NCPAINT消息。所以我们要处理两次WM_NCPAINT消息。
在需要窗口显示时,调用ShowWindow(SW_SHOW)即可。
程序执行的结果是,原来处于激活状态的窗口可能会闪动两下,然后仍然处于激活状态。
4.将对话框作为子窗口
这种方法是采用SDI框架,主窗口始终隐藏,对话框作为主窗口的成员变量,在CMainFrame::OnCreate()里面加入下代码:
if(!dlg.Create(IDD_MYDIALOG, this))
{
return –1;
}
dlg.ShowWindow(SW_HIDE);
5.改变Dialog Class Info 信息
a.在Dialog Class Info 里改Dialog为Window
b.重载OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
lpwndpos->flags= SWP_HIDEWINDOW;
由于基于MFC对话框隐藏问题对于初学者来说是有一定难度的,甚至认为只要ShowWindow(SW_HIDE)这样就可以了,其不知由于MFC为了达到信息的封装而隐藏了很多细节,从而使我们"错过"了在该显示(或隐藏)的地方和机会.
相关文章推荐
- 基于对话框的MFC程序启动时完全隐藏的简单方法
- 隐藏基于对话框的MFC应用程序窗口的方法 (推荐这个方法,非常好用)
- .隐藏基于对话框的MFC应用程序窗口的方法
- 基于对话框的MFC程序启动时完全隐藏的简单方法
- 隐藏基于对话框的MFC应用程序窗口的方法
- 关于在MFC中实用在基于对话框窗口上面绘制折线的实现方法
- MFC基于对话框加载菜单栏的方法
- 如何让基于对话框的MFC程序启动后自动隐藏对话框
- 基于对话框的MFC PocketPC应用程序全屏方法
- 几种MFC对话框的隐藏方法
- MFC中解决基于对话框程序按下Enter,Esc程序自动退出的方法
- 解决 mfc OninitDialog里面隐藏对话框的方法
- 基于MFC的对话框添加ToolTip的简单方法
- MFC基于对话框风格按钮控件添加图片的方法(大神止步)
- 基于对话框MFC按Enter键或者Ese退出的解决方法
- 如何让基于对话框的MFC程序一运行起来就完全隐藏
- 为基于MFC的对话框添加ToolTip的简单方法
- MFC中基于对话框的程序启动后自动隐藏
- 为基于MFC的对话框添加ToolTip的简单方法
- 几种MFC对话框的隐藏方法