VC++MFC 窗口最大化、最小化的实现!
当利用AppWizard生成运用程序框架时,VC++已经为我们在标题条上做好了最大化,最小化及恢复按钮。
但有时我们也想在其它地方使用这些功能。这就可采用下面的办法。
在指定的消息处理函效中加入下列语句,则程序在收到该条消息后即执行窗口最小化。
WINDOWPLACEMENT lwndpl;
WINDOWPLACEMENT * lpwndpl;
lpwndpl = &lwndpl;
GetWindowPlacement(lpwndpl);
lpwndpl->showCmd = SW_SHOWMINIMIZED;
SetWindowPlacement(lpwndpl);
BOOL GetWindowPlacement(WINDOWPLACEMENT * lpwndpl) const
函数的作用为获取表示当前窗口的布局的结构WINDOWPLACEMENT的结构变量指针。
结构WINDOWPLACEMENT定义为:
typedef struct tagWINDOWPLACEMENT { /* wndpl * / UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition;
} WINDOWPLACEMENT;
其中的成员变量showCmd确定当前窗口的状态。其取值一般为:
SW_HIDE 隐藏窗口。
SW_MINIMIZE 最小化指定的窗口。
SW_RESTORE 将最大化或最小化的窗口恢复原来大小。
SW_SHOW 以原来的大小激话并显示窗口。
SW_SHOWMAXIMIZED 激活并最大化窗口。
函数BOOL SetWindowPlacement(const WINDOWPLACEMENT * lpwndpl)作用为按结构MENT的设置显示窗口。
MFC中的CWnd类提供了下面两个函数用于判断窗口的最大化、最小化状态,其子类继承了这些函数:
IsZoomed:判断窗口是否处于最大化状态。
IsIconic:判断窗口是否处于最小化状态。
可以使用CWnd::ShowWindow函数设置窗口的显示状态,其函数原型如下:
BOOL CWnd::ShowWindow( int nCmdShow );
其中nCmdShow常用值有:
SW_HIDE: 隐藏窗口
SW_SHOW: 激活并以当前的大小在当前位置显示窗口
SW_SHOWMAXIMIZED: 最大化窗口
SW_SHOWMINIMIZED: 最小化窗口
SW_SHOWNORMAL: 激活并显示窗口,如果窗口处于最大化或最小化的状态时,将其恢复到原始窗口状态