C 中 win32 FillRect() 函数的问题
Issue with win32 FillRect() function in C
我正在尝试为 2048 游戏绘制一个 4x4 网格,其中包含 50px 的 100x100 矩形。我遵循了一个教程并尝试制作一个 drawCases() 函数以在 window 创建时调用。如果我注释掉以下行,将创建 window 并且一切正常(除了未绘制矩形):
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);
}
感谢您的帮助!
以下是可能的错误:
for (int j = 0; j < 4; i++){
将i++
替换为j++
我正在尝试为 2048 游戏绘制一个 4x4 网格,其中包含 50px 的 100x100 矩形。我遵循了一个教程并尝试制作一个 drawCases() 函数以在 window 创建时调用。如果我注释掉以下行,将创建 window 并且一切正常(除了未绘制矩形):
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);
}
感谢您的帮助!
以下是可能的错误:
for (int j = 0; j < 4; i++){
将i++
替换为j++