Neuzeichnen des gesamten Clientbereichs

Sie können ihre Anwendung den gesamten Inhalt des Clientbereichs neu zeichnen lassen, wenn sich die Größe des Fensters ändert, indem Sie die CS_HREDRAW und CS_VREDRAW Formatvorlagen für die Fensterklasse festlegen. Anwendungen, die die Größe der Zeichnung basierend auf der Größe des Fensters anpassen, verwenden diese Formatvorlagen, um sicherzustellen, dass sie beim Zeichnen mit einem völlig leeren Clientbereich beginnen.

Im folgenden Beispiel zeichnet die Fensterprozedur eine fünfzeige star, die sich ordnungsgemäß in den Clientbereich einpasst. Sie verwendet einen allgemeinen Gerätekontext und muss den Zuordnungsmodus sowie Fenster- und Viewportausdehnungen jedes Mal festlegen, wenn die WM_PAINT Nachricht verarbeitet wird.

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; 
}