Win32APIのWM_SIZEメッセージとWM_SIZINGメッセージ。
WM_SIZINGはサイズ変更中に、WM_SIZEはサイズ変更後に送られます・・・。
とはいうものの、発行されるタイミングより遙かに大きな違いがあります。というか全く別物です。
lParam & 0xFFFF | クライアント領域の幅 |
(lParam >> 16) & 0xFFFF | クライアント領域の高さ |
RECT rect;
GetClientRect(hWnd,&rect);
RECT* prect = (RECT*)lParam;
prect->left | ウィンドウの左の座標 |
prect->top | ウィンドウの上の座標 |
prect->right | ウィンドウの右の座標 |
prect->bottom | ウィンドウの下の座標 |
RECT rect;
GetWindowRect(hWnd,&rect);
case WM_SIZE: { printf(" WM_SIZE\n" "x-size : %d\n" "y-size : %d\n", lParam & 0xFFFF, (lParam >> 16) & 0xFFFF ); RECT rect; GetClientRect(hWnd, &rect); printf(" GetClientRect\n" "x-size : %d\n" "y-size : %d\n", rect.right, rect.bottom ); } puts("-----------"); break; case WM_SIZING: { RECT* prect = (RECT*)lParam; printf( " WM_SIZING\n" "left : %d\n" "top : %d\n" "right : %d\n" "bottom: %d\n" , prect->left, prect->top, prect->right, prect->bottom ); RECT rect; GetWindowRect(hWnd, &rect); printf( " GetWindowRect\n" "left : %d\n" "top : %d\n" "right : %d\n" "bottom: %d\n" , rect.left, rect.top, rect.right, rect.bottom ); puts(""); } break;