c - C 中 win32 FillRect() 函数的问题

标签 c winapi

我正在尝试为 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);
}

感谢您的帮助!

最佳答案

这里是可能的错误:

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

i++替换为j++

关于c - C 中 win32 FillRect() 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399103/

相关文章:

c++ - 什么是 C 和 C++ 上下文中的激活记录?

c++ - 如何使用 WinAPI 制作可编辑的文本框?

c++ - Windows API 中的驱动器/分区和唯一驱动器 ID

c - 在 C 中查询最大套接字发送缓冲区大小?

c - 为什么我的 PRO*C 程序的控制不进入 if 部分?

c++ - 使用 PowerShell 作为控制台,就好像它是使用 AllocConsole 创建的一样

user-interface - 有 Win32API 的替代 API 吗?

c# - 为什么我要使用托管(C# 和 .NET)或 native 代码进行 Windows API 开发?

c - arc4random_buf 是否有最佳批量大小?

c - 程序和指针 C