【问题标题】:Issue with win32 FillRect() function in CC 中 win32 FillRect() 函数的问题
【发布时间】:2015-05-22 22:33:45
【问题描述】:

我正在尝试为 2048 游戏绘制一个由 100x100 矩形组成的 4x4 网格,它们之间的距离为 50px。我遵循了一个教程并尝试制作一个在创建窗口时调用的 drawCases() 函数。如果我注释掉以下行,则会创建窗口并且一切正常(除了未绘制矩形):

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

感谢您的帮助!

【问题讨论】:

标签: c winapi


【解决方案1】:

这是可能的错误:

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

i++ 替换为j++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2014-05-26
    • 1970-01-01
    相关资源
    最近更新 更多