2010-05-02 10 views
1

Win32에서 간단한 창을 만들고 그 안에 직사각형을 그리려고합니다. 그러나 어떤 이유로 FillRect가 작동하지 않습니다. 여기 내 출처 :FillRect는 아무 것도 그려지지 않습니다

#include <windows.h> 
#include "resource.h" 

RECT rect; 

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    static PAINTSTRUCT ps; 
    static HDC hDC; 

    switch(msg) 
    { 
     case WM_PAINT: 
      hDC = BeginPaint(hWnd, &ps); 

      FillRect(hDC, &rect, (HBRUSH)(COLOR_WINDOW+1)); 

      EndPaint(hWnd, &ps); 
     break; 

     case WM_CLOSE: 
      DestroyWindow(hWnd); 
     break; 

     case WM_DESTROY: 
      PostQuitMessage(0); 
     break; 

     default: 
      return DefWindowProc(hWnd, msg, wParam, lParam); 
    } 
    return 0; 
} 


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    WNDCLASSEX wc; 
    HWND hWnd; 
    MSG msg; 
    rect.left = 0; 
    rect.right = 0; 
    rect.top = 100; 
    rect.bottom = 100; 

    wc.cbSize  = sizeof(WNDCLASSEX); 
    wc.style   = 0; 
    wc.lpfnWndProc = WndProc; 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hInstance  = hInstance; 
    wc.hIcon   = LoadIcon(NULL, IDI_APPLICATION); 
    wc.hCursor  = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)(COLOR_ACTIVEBORDER+1); 
    wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN_MENU); 
    wc.lpszClassName = "Main"; 
    wc.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); 

    RegisterClassEx(&wc); 

    hWnd = CreateWindowEx(NULL, "Main", "Main", WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 240, 360, NULL, NULL, hInstance, NULL); 

    ShowWindow(hWnd, nCmdShow); 
    UpdateWindow(hWnd); 

    while(GetMessage(&msg, NULL, 0, 0) > 0) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 

    return msg.wParam; 
} 

내가 코드가 잘못되었거나 잘못 되었나요? 미리 감사드립니다.

답변

3

코드는 정상입니다. 문제는 rect.left = 0 및 rect.right = 0이며 rect.top 및 rect.bottom도 동일하다는 것입니다. 따라서 rect는 0입니다.

rect.left = 0; 
rect.right = 100; 
rect.top = 0; 
rect.bottom = 100; 
시도
관련 문제