模态窗口建立时隐藏

来源:互联网 发布:考勤系统怎么导出数据 编辑:程序博客网 时间:2024/05/16 17:40
模态窗口建立时隐藏

在做毕业设计的时候遇到一个问题,我在VC中通过主界面产生一个窗口(其实是一个进程),由于一直需要该进程在整个生命周期中都存在,所以该窗口使用dlg.DoModal()的方式来不消灭。但是我的目的是想让它成为后台的进程,而不想它出现窗口界面。这时候下面的方法可以用了:

模态窗口一创建后就会显示,就算设置WS_VISIBLE属性或在OnInitDialog加入ShowWindow(SW_HIDE)也没有效果.

下面这种方法可以比较好的解决这一问题:

首先声明两个变量.

RECT m_nRect;
LONG m_ExStyle;

在OnInitDialog事件中加入如下代码用来保存原来的窗口位置和扩展风格.

m_ExStyle = GetWindowLong(hwnd ,GWL_EXSTYLE);
 GetWindowRect(hwnd ,&m_nRect);

核心代码,修改窗口的扩展风格和窗口尺寸

LONG uStyle = m_ExStyle & ~WS_EX_APPWINDOW | WS_EX_TOOLWINDOW ;
SetWindowLong(hwnd ,GWL_EXSTYLE ,uStyle);    
MoveWindow(hwnd ,0 ,0 ,0 ,0 ,FALSE);  

到了这里窗口已经能够隐藏了,恢复的时候应该怎么办呢?

在想要显示窗口的时候加入如下代码即可:

 SetWindowLong(hWnd ,GWL_EXSTYLE ,m_ExStyle);                                    //恢复原来的窗口扩展风格和窗口位置
 SetWindowPos(hWnd ,NULL ,m_nRect.left,m_nRect.top ,m_nRect.right – m_nRect.left ,m_nRect.bottom – m_nRect.top, SWP_NOZORDER  | SWP_SHOWWINDOW );

引用地址:http://www.tiansin.com/thread-588.html
0 0