[VC] 显示32个系统定义颜色 (COLOR_***)

Posted qbj196

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[VC] 显示32个系统定义颜色 (COLOR_***)相关的知识,希望对你有一定的参考价值。

#include <Windows.h>
#include <tchar.h>


TCHAR szColor[32][30] = {
    _T("- - -"), _T("COLOR_SCROLLBAR"), _T("COLOR_BACKGROUND"),
    _T("COLOR_ACTIVECAPTION"), _T("COLOR_INACTIVECAPTION"), _T("COLOR_MENU"),
    _T("COLOR_WINDOW"), _T("COLOR_WINDOWFRAME"), _T("COLOR_MENUTEXT"),
    _T("COLOR_WINDOWTEXT"), _T("COLOR_CAPTIONTEXT"), _T("COLOR_ACTIVEBORDER"),
    _T("COLOR_INACTIVEBORDER"), _T("COLOR_APPWORKSPACE"), _T("COLOR_HIGHLIGHT"),
    _T("COLOR_HIGHLIGHTTEXT"), _T("COLOR_BTNFACE"), _T("COLOR_BTNSHADOW"),
    _T("COLOR_GRAYTEXT"), _T("COLOR_BTNTEXT"), _T("COLOR_INACTIVECAPTIONTEXT"),
    _T("COLOR_BTNHIGHLIGHT"), _T("COLOR_3DDKSHADOW"), _T("COLOR_3DLIGHT"),
    _T("COLOR_INFOTEXT"), _T("COLOR_INFOBK"), _T("- - -"),
    _T("COLOR_HOTLIGHT"), _T("COLOR_GRADIENTACTIVECAPTION"), _T("COLOR_GRADIENTINACTIVECAPTION"),
    _T("COLOR_MENUHILIGHT"), _T("COLOR_MENUBAR")
};


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void OnPaint(HWND);


int APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    WNDCLASSEX wcex;
    HWND hWnd;

    wcex.cbClsExtra        = 0;
    wcex.cbSize            = sizeof(WNDCLASSEX);
    wcex.cbWndExtra        = 0;
    wcex.hbrBackground    = (HBRUSH)(COLOR_BTNFACE + 1);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hIcon            = NULL;
    wcex.hIconSm        = NULL;
    wcex.hInstance        = hInst;
    wcex.lpfnWndProc    = WndProc;
    wcex.lpszClassName    = _T("Wnd");
    wcex.lpszMenuName    = NULL;
    wcex.style            = CS_VREDRAW | CS_HREDRAW;
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL, _T("RegisterClassEx()"), NULL, MB_ICONERROR);
        return 0;
    }

    hWnd = CreateWindowEx(0, _T("Wnd"), _T("Colors"),
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInst, NULL);
    if (!hWnd)
    {
        MessageBox(NULL, _T("CreateWindowEx()"), NULL, MB_ICONERROR);
        return 0;
    }

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_PAINT:
        OnPaint(hWnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }

    return 0;
}

void OnPaint(HWND hWnd)
{
    HDC hdc;
    PAINTSTRUCT pt;
    RECT rc;
    int i, j;
    TCHAR sz[40];

    hdc = BeginPaint(hWnd, &pt);
    if (hdc)
    {
        for (i=0; i< 32; i++)
        {
            if (i%4 == 0)
            {
                j = i / 4;
                rc.left = 0;
                rc.top = j * 60;
                rc.bottom = rc.top + 60;
            }
            else
            {
                rc.left = rc.right;
            }
            rc.right = rc.left + 168;

            FillRect(hdc, &rc, (HBRUSH)(i));
            wsprintf(sz, L"(%d)%s", i, szColor[i]);
            DrawText(hdc, sz, lstrlen(sz), &rc, DT_WORDBREAK | DT_EDITCONTROL);
        }

        EndPaint(hWnd, &pt);
    }
}

技术图片

以上是关于[VC] 显示32个系统定义颜色 (COLOR_***)的主要内容,如果未能解决你的问题,请参考以下文章

NameError:使用 python-docx 时未定义名称“WD_COLOR_INDEX”

Winforms UserControl 显示具有反转颜色的矩形

在 C# 中将颜色定义为常量

错误 _renderer.setElementStyle “无法在 [null] 中设置未定义的属性‘背景颜色’”

未通过SwiftUI从资产加载颜色

封装不同的打印