在WINAPI中创建一个颜色块

时间:2016-09-19 19:29:11

标签: c++ user-interface winapi

如何在程序中创建一个颜色块?我已经查看了MSDN文档以获得答案,但它似乎并不存在。我现在只需要能够在某些地方创建颜色块。 (我已经知道WM_CREATE的工作原理以及如何在WndProc中实现内容。)

2 个答案:

答案 0 :(得分:0)

要在窗口上绘制任何内容,您需要处理WM_PAINT。然后,您将调用BeginPaint,使用各种函数进行绘制,最后调用EndPaint

要绘制矩形,您可以使用FillRect

此处有更多详情:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162759(v=vs.85).aspx

还提供了一个引导范例:

https://msdn.microsoft.com/en-us/library/windows/desktop/ff381401(v=vs.85).aspx

基本上:

 switch (uMsg)
    {

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);

            // All painting occurs here, between BeginPaint and EndPaint.

            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));

            EndPaint(hwnd, &ps);
        }
        return 0;

    }

答案 1 :(得分:0)

您可以使用自定义颜色创建画笔,然后创建一个矩形或任何形状,然后填充它: 这个例子只是为了告诉你如何。

**将此代码放在窗口过程中

    case WM_PAINT:
    {

        PAINTSTRUCT ps;
        HDC hDc = BeginPaint(hWnd, &ps);
        HBRUSH hBrush = CreateSolidBrush(RGB(90, 50, 120));

        RECT rct = {100, 100, 300, 200};

        FillRect(hDc, &rct, hBrush);

        EndPaint(hWnd, &ps);
        DeleteObject(hBrush);    // freeing resource to avoid memory leak
    }
    break;