Share via


クライアント領域全体の再描画

ウィンドウ クラスのCS_HREDRAWスタイルとCS_VREDRAWスタイルを設定することで、ウィンドウのサイズが変更されるたびに、アプリケーションでクライアント領域のコンテンツ全体を再描画できます。 ウィンドウのサイズに基づいて図面のサイズを調整するアプリケーションでは、これらのスタイルを使用して、描画時に完全に空のクライアント領域から開始されるようにします。

次の例では、ウィンドウ プロシージャは、クライアント領域に適切に収まる 5 ポイントのstarを描画します。 一般的なデバイス コンテキストを使用し 、WM_PAINT メッセージ が処理されるたびに、マッピング モードとウィンドウとビューポートのエクステントを設定する必要があります。

LRESULT APIENTRY WndProc(HWMD hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    PAINTSTRUCT ps; 
    HDC hdc; 
    RECT rc; 
    POINT aptStar[6] = {50,2, 2,98, 98,33, 2,33, 98,98, 50,2}; 
 
    . 
    . 
    . 
 
        case WM_PAINT: 
            hdc = BeginPaint(hwnd, &ps); 
            GetClientRect(hwnd, &rc); 
            SetMapMode(hdc, MM_ANISOTROPIC); 
            SetWindowExtEx(hdc, 100, 100, NULL); 
            SetViewportExtEx(hdc, rc.right, rc.bottom, NULL); 
            Polyline(hdc, aptStar, 6); 
            EndPaint(hwnd, &ps); 
            return 0L; 
 
        . 
        . 
        . 
} 
 
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    WNDCLASS wc; 
 
    . 
    . 
    . 
 
        wc.style = CS_HREDRAW | CS_VREDRAW; 
        wc.lpfnWndProc = (WNDPROC) WndProc; 
 
    . 
    . 
    . 
 
        RegisterClass(&wc); 
 
    . 
    . 
    . 
 
    return msg.wParam; 
}