2010-05-02 10 views
1

J'essaye de créer une fenêtre simple dans Win32 et dessine un rectangle dedans, mais pour une raison quelconque FillRect ne fonctionne pas pour moi. Voici ma source:FillRect ne dessine rien

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

Y at-il quelque chose qui me manque ou qui ne va pas dans mon code? Merci d'avance

Répondre

3

Votre code est correct. Le problème est que vous avez rect.left = 0 et rect.right = 0 et les rect.top et rect.bottom sont également les mêmes. Donc, votre rect est 0 taille.

Essayez cette

rect.left = 0; 
rect.right = 100; 
rect.top = 0; 
rect.bottom = 100;