**如下:
//居中視窗
int scrwidth, scrheight;
rect rect;
scrwidth = getsystemmetrics(sm_cxscreen);
scrheight = getsystemmetrics(sm_cyscreen);
getwindowrect(hwnd, &rect);
setwindowpos(hwnd, hwnd_topmost, (scrwidth - rect.right) / 2, (scrheight - rect.bottom) / 2, rect.right - rect.left, rect.bottom - rect.top, swp_showwindow);
具體說明:
要實現視窗居中顯示並不難,只要在窗體建立的時候我們設定視窗的位置就可以了.在這裡我們主要用到3個api函式,分別是:getsysmetrics,getwindowrect,setwindowpos.
我們用getsysmetrics來獲的螢幕的寬度和高度,然後用getwindowrect來獲取視窗的座標.通過運算後計算出居中視窗的位置,最後用setwindowpos來設定窗體的位置.整個過程就是如此,而這些部步驟我們都要在視窗建立之前設定好,所以我們要把這些實現方法寫進wm_create訊息中.
現在讓我們看一下,以上3個api函式的解釋,下面的說明是從
getsystemmetrics
函式功能:
返回與windows
環境有關的資訊。
函式原型:int getsystemmetrics(int nindex)
引數:nindex:
常數,指定欲獲取的資訊。由於取值很多,所以在這裡不一一枚舉了,本例子只用到兩個常數值:
sm_cxscreen:螢幕寬度。
sm_cyscreen:螢幕高度。
getwindowrect
函式功能:該函式返回指定視窗的邊框矩形的尺寸。該尺寸以相對於螢幕座標左上角的螢幕座標給出。
函式原型:bool getwindowrect(hwnd hwnd,lprectlprect);
引數:hwnd:視窗控制代碼。
lprect:指向乙個rect結構的指標,該結構接收視窗的左上角和右下角的螢幕座標。
返回值:如果函式成功,返回值為非零:如果函式失敗,返回值為零。
setwindowpos
函式功能:該函式改變乙個子視窗,彈出式視窗式頂層視窗的尺寸,位置和z序。子視窗,彈出式視窗,及頂層視窗根據它們在螢幕上出現的順序排序、頂層視窗設定的級別最高,並且被設定為z序的第乙個視窗。
函式原型:bool setwindowpos(hwn hwnd,hwnd hwndlnsertafter,int x,int y,int cx,int cy,unit.flags);
引數:hwnd:視窗控制代碼。
hwndlnsertafter:在z序中的位於被置位的視窗前的視窗控制代碼。該引數必須為乙個視窗控制代碼,或下列值之一:
hwnd_bottom:將視窗置於z序的底部。如果引數hwnd標識了乙個頂層視窗,則視窗失去頂級位置,並且被置在其他視窗的底部。
hwnd_dottopmost:將視窗置於所有非頂層視窗之上(即在所有頂層視窗之後)。如果視窗己經是非頂層視窗則該標誌不起作用。
hwnd_top:將視窗置於z序的頂部。
hwnd_topmost:將視窗置於所有非頂層視窗之上。即使視窗未被啟用視窗也將保持頂級位置。
查g看該引數的使用方法,請看說明部分。
x:以客戶座標指定視窗新位置的左邊界。
y:以客戶座標指定視窗新位置的頂邊界。
cx:以畫素指定視窗的新的寬度。
cy:以畫素指定視窗的新的高度。
uflags:視窗尺寸和定位的標誌。
02 使用Windows API建立視窗
1 開啟visual studio 2017,其他visual studio版本也可以 2 新建乙個windows桌面嚮導專案,或者win32應用程式專案都可以 3 新建專案時,選擇windows應用程式,並勾上空專案 4 新加原始檔,注意因為windowsapi都是c語言實現,所以,新加檔案的字尾...
C winform視窗開啟特效及視窗位置居中
在啟動乙個程式時,我們希望視窗顯示的位置處於螢幕的正中心,可以如下設定 mainform mainform new mainform mainform.startposition formstartposition.centerscreen mainform.show 如果在允許操作主視窗之前,必須...
C winform視窗開啟特效及視窗位置居中
在啟動乙個程式時,我們希望視窗顯示的位置處於螢幕的正中心,可以如下設定 mainform mainform new mainform mainform.startposition formstartposition.centerscreen mainform.show 如果在允許操作主視窗之前,必須...