当前位置:

首页 > 技术文章

让模态窗口创建后立即隐藏

模态窗口一创建后就会显示,就算设置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 );

本文引用地址: