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

转载于:https://www.cnblogs.com/qbj196/p/10635261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值