2015-05-22 55 views
1

我想繪製一個20x48的遊戲,在它們之間繪製一個100x100的矩形,其間有50px的4x4網格。我遵循一個教程,並嘗試在窗口創建時調用drawCases()函數。創建窗口和一切工作(除矩形未畫出),如果我註釋掉下面一行:問題C中的win32 FillRect()函數

FillRect(hdc,&rectangles[i][j],(HBRUSH)GetStockObject(LTGRAY_BRUSH)); 

否則程序崩潰。 這裏是整個功能:

void drawCases(HWND hwnd){ 
    HDC hdc = GetDC(hwnd); 

    // Error Check 
    if(!hdc) 
     return; 

    RECT clientRect; 
    RECT rectangles[4][4]; 
    GetClientRect(hwnd,&clientRect); // Get the window's client area RECT 
    FillRect(hdc,&clientRect,(HBRUSH)GetStockObject(BLACK_BRUSH)); 
    int leftStart = (clientRect.right)/2 - 200; 
    int topStart = (clientRect.bottom)/2 - 200; 
    for (int i = 0; i < 4; i++){ 
     for (int j = 0; j < 4; i++){ 
      int k = j * 150; 
      int n = i * 150; 
      rectangles[i][j].left = k + leftStart; 
      rectangles[i][j].right = k + leftStart + 100; 
      rectangles[i][j].top = topStart + n; 
      rectangles[i][j].bottom = topStart + n + 100; 
      FillRect(hdc,&rectangles[i][j],(HBRUSH)GetStockObject(LTGRAY_BRUSH)); 
     } 
    } 
    ReleaseDC(hwnd,hdc); 
} 

謝謝你的幫忙!

+1

[WM_PAINT](https://msdn.microsoft.com/en-us/library/windows/desktop/dd145137( v = vs.85).aspx)是繪製的地方 –

回答

5

下面是可能的錯誤:

for (int j = 0; j < 4; i++){ 

替換i++j++

+0

哦,我的上帝,我不能相信我讓它溜走。我一直試圖讓這個工作超過一個小時,我開始質疑我對語言的理解,但這只是一個錯字。它現在起作用了,非常感謝你! –