CenterWindow()的用法為:
void CenterWindow( CWnd* pAlternateOwner = NULL );
其中參數pAlternateOwner指向所想居中的視窗的指針。
然後利用函數GetSystemMetrics( int nIndex )得到系統目前設定如螢幕分辨率等。
nIndexs= SM_CXSCREEN 時函數傳回螢幕的寬度;傳回值機關為像素點。
nIndexs= SM_CYSCREEN 時函數傳回螢幕的高度;傳回值機關為像素點。
函數BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) 是最重要的。他的參數為一個指向結構變量WINDOWPLACEMENT的指針(lpwndpl);其中WINDOWPLACEMENT結構變量資料結構具體為:
typedef struct tagWINDOWPLACEMENT { /* wndpl */
UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition;
} WINDOWPLACEMENT;
他包含了視窗在螢幕上的定位資訊。其中成員變量的含義為:
length:指結構變量的長度,機關位元組。
flags: 标志值,控制視窗最小化或視窗還原的方法,可以取如下值:
WPF_SETMINPOSITION:指定視窗最小化時的x位置和y位置。
WPF_RESTORETOMAXIMIZED:指定視窗以最大化方式還原,盡管可能視窗并不是在最大化時最小化的。不改變視窗的預設還原方式。
showCmd:指定視窗的目前顯示狀态。可以取值:
SW_HIDE:隐藏視窗并激活另一視窗。
SW_MINIMIZE:最小化指定視窗并激活系統視窗清單中最頂層視窗。
SW_RESTORE:激活并顯示視窗,如果視窗處于最小化或最大化狀态,則視窗還原到原始大小和位置。
SW_SHOW:以視窗的目前大小和位置激活并顯示視窗。
SW_SHOWMAXIMIZED:以最大化方式激活并顯示視窗。
SW_SHOWMINIMIZED:以圖示方式激活并顯示視窗。
SW_SHOWMINNOACTIVE:以圖示方式視窗。 但不改變視窗的活動狀态。
SW_SHOWNA:以視窗的目前狀态顯示視窗。
SW_SHOWNOACTIVATE:以視窗最近一次的大小和位置顯示視窗。 但不改變視窗的活 動狀态。
SW_SHOWNORMAL:激活并顯示視窗。如果視窗被最大化或最小化,則視窗還原到原始大小和位置。
ptMinPosition:指定視窗最小化時的左傷角坐标。
ptMaxPosition:指定視窗最大化時的左傷角坐标。
rcNormalPosition:指定視窗在還原時的坐标。
通過靈活使用函數GetWindowPlacement()就可以得到視窗的配置資訊。
看到這,可能有些讀者已經想到了GetWindowPlacement()函數的姐妹函數SetWindowPlacement(),不用多說,其用法如下:
BOOL SetWindowPlacement( WINDOWPLACEMENT* lpwndpl );
顯然,通過函數SetWindowPlacement(),再加以簡單的計算,我們就可以來設定視窗的位置、大小以及狀态等,進而可以自如地控制視窗顯示與否以及視窗的大小、位置等