Windows的三種座標系:螢幕座標系,非客戶區座標系,客戶區座標系
阿新 • • 發佈:2022-03-03
1. 螢幕座標系:以螢幕的左上角為原點,如圖所示
GetWindowRect() 函式獲得的 RECT 就是以螢幕座標系算的。
2. 非客戶區座標系(視窗座標系)
包括標題欄的部分。GetWindowDC 返回的裝置環境就是基於此座標系,一般只在 WM_NCPAINT 訊息中使用。
3. 客戶區座標系
不包括標題欄,座標的原點在標題欄下的客戶區的左上角。
BeginPaint 函式返回的裝置環境是基於客戶區座標系的,只在 WM_PAINT 訊息中使用,與 EndPaint 函式成對使用。
GetDC 函式返回的裝置環境也是基於客戶區座標系的,可以在其他訊息中使用,與 ReleaseDC 函式成對使用。
GetClientRect 函式獲得的RECT 是基於客戶區座標系的,RECT 的左上角座標一定是(0,0)。
ScreenToClient 函式將 螢幕座標系的座標 --> 客戶區座標系的座標
ClientToScreen 函式將 客戶區座標系的座標 --> 螢幕座標系的座標
MoveWindow 函式,移動的是主視窗時傳入的 RECT 是基於螢幕座標系的,若是移動的子視窗,基於的是父視窗的客戶區座標座標系。