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);
}
謝謝你的幫忙!
[WM_PAINT](https://msdn.microsoft.com/en-us/library/windows/desktop/dd145137( v = vs.85).aspx)是繪製的地方 –