天天看點

CenterWindow()的用法 .

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(),再加以簡單的計算,我們就可以來設定視窗的位置、大小以及狀态等,進而可以自如地控制視窗顯示與否以及視窗的大小、位置等

繼續閱讀