1. 屏幕坐標系:以屏幕的左上角為原點,如圖所示
GetWindowRect() 函數獲得的 RECT 就是以屏幕坐標系算的。
2. 非客戶區坐標系(窗口坐標系)
包括標題欄的部分。GetWindowDC 返回的設備環境就是基於此坐標系,一般只在 WM_NCPAINT 消息中使用。
3. 客戶區坐標系
不包括標題欄,坐標的原點在標題欄下的客戶區的左上角。
BeginPaint 函數返回的設備環境是基於客戶區坐標系的,只在 WM_PAINT 消息中使用,與 EndPaint 函數成對使用。
GetDC 函數返回的設備環境也是基於客戶區坐標系的,可以在其他消息中使用,與 ReleaseDC 函數成對使用。
GetClientRect 函數獲得的RECT 是基於客戶區坐標系的,RECT 的左上角坐標一定是(0,0)。
ScreenToClient 函數將 屏幕坐標系的坐標 --> 客戶區坐標系的坐標
ClientToScreen 函數將 客戶區坐標系的坐標 --> 屏幕坐標系的坐標
MoveWindow 函數,移動的是主窗口時傳入的 RECT 是基於屏幕坐標系的,若是移動的子窗口,基於的是父窗口的客戶區坐標坐標系。