win32視窗的大小,居中,拖動

2021-08-17 16:45:42 字數 1582 閱讀 5592

參考

視窗風格設定,後面兩個是最大最小化按鈕

dwstyle^ws_thickframe^ws_maximizebox^ws_minimizebox

訊息迴圈裡新增

case wm_nclbuttondown:

}break;

1.設定視窗位置和大小

setwindowpos(

hwnd: hwnd; 視窗控制代碼

hwndinsertafter: hwnd或者乙個unit; 視窗的 z 順序

x, y: integer; 位置

cx, cy: integer; 大小

uflags: uint 選項

): bool;

//hwndinsertafter 引數可選值:

hwnd_top = 0; 在前面,能用top就不要用topmost,topmost即使是不啟用狀態也會擋住別的啟用的視窗

hwnd_bottom = 1; 在後面

hwnd_topmost = hwnd(-1); 在前面, 位於任何頂部視窗的前面

hwnd_notopmost = hwnd(-2); 在前面, 位於其他頂部視窗的後面

//uflags 引數可選值:

swp_nosize = 1; 忽略cx、cy,保持大小

swp_nomove = 2; 忽略x、y,不改變位置

swp_nozorder = 4; 忽略hwndinsertafter,保持z順序

swp_noredraw = 8; 不重繪

swp_noactivate = 0x10; 不啟用

swp_framechanged = 0x20; 強制傳送wm_nccalcsize訊息,一般只是在改變大小時才傳送此訊息

swp_showwindow = 0x40; 顯示視窗

swp_hidewindow = 0x80; 隱藏視窗

swp_nocopybits = 0x100; 丟棄客戶區

swp_noownerzorder = 0x200; 忽略hwndinsertafter,不改變z序列的所有者

swp_nosendchanging = 0x400; 不發出wm_windowposchanging訊息

swp_drawframe = swp_framechanged; 畫邊框

swp_noreposition = swp_noownerzorder;

swp_defererase = 0x2000; 防止產生wm_syncpaint訊息

swp_asyncwindowpos = 0x4000; 若呼叫程序不擁有視窗,系統會向擁有視窗的執行緒發出需求

2.獲取視窗位置和大小

getwindowrect(hwnd hwnd, lprect lprect );//獲得視窗相對螢幕的大小

getclientrect(hwnd hwnd, lprect lprect );//獲得視窗相對客戶區的大小

getsystemmetrics(sm_cxscreen);//獲取螢幕大小

getsystemmetrics(sm_cyscreen);

win32視窗樣式

private const gwl style 16 視窗樣式 private sub command1 click orstyle end sub private sub orstyle dim lstyle as long lstyle getwindowlong me.hwnd,gwl sty...

WIN32視窗建立

win32視窗建立過程 1 定義視窗類 在msdn中找到函式原型 winmain 2 定義視窗處理函式 在msdn中找到原型 windowproc 3 設計視窗類 4 註冊視窗類 registerclass registerclas 5 建立視窗 createwindow createwindowe...

win32繪製視窗

static int cxclient,cyclient 宣告兩個變數存放滑鼠 x,y 座標.在下面,我們為這兩項賦值時,loword lparam 代表取 lparam 的低 16 位,hiword lparam 代表取lparam 的高 16 位,在 lparam 中存放的實際就是滑鼠的位置,低...