第九章 9-2 单选按钮

来源:互联网 发布:超氧换血疗法 知乎 编辑:程序博客网 时间:2024/06/05 03:45

这里写图片描述

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    TCHAR *light[] = { TEXT("Red"),TEXT("Yellow"),TEXT("Green") };    HDC hdc;    TEXTMETRIC tm;    static int cxChar, cyChar;    static HWND hctlWnd[3];    static HWND hwndGroup;    static HWND hChecked;    switch (message)    {    case WM_CREATE:        hdc = GetDC(hWnd);        SelectObject(hdc, GetStockObject(SYSTEM_FONT));        GetTextMetrics(hdc, &tm);        cxChar = tm.tmAveCharWidth;        cyChar = tm.tmHeight + tm.tmExternalLeading;        ReleaseDC(hWnd, hdc);        for (int i = 0; i < 3; i++)        {            hctlWnd[i] = CreateWindow(TEXT("button"), light[i],                BS_RADIOBUTTON | WS_VISIBLE | WS_CHILD,                cxChar / 2, cyChar*(2 * i + 2), 20 * cxChar, 7 * cyChar / 4,                hWnd, (HMENU)(i + 1), hInst, NULL);        }        hwndGroup = CreateWindow(TEXT("button"), TEXT("light"),            BS_GROUPBOX | WS_CHILD | WS_VISIBLE,            cxChar / 4, 0, 21 * cxChar, 9 * cyChar, hWnd, 0, hInst, NULL);        hChecked = hctlWnd[0];        SendMessage(hChecked, BM_SETCHECK, 1, 0L);        break;    case WM_COMMAND:    //用hChecked句柄代替新的句柄进行交换        SendMessage(hChecked, BM_SETCHECK, 0, 0L);        hChecked = (HWND)LOWORD(lParam);        SendMessage(hChecked, BM_SETCHECK, 1, 0L);             break;    case WM_DESTROY:        PostQuitMessage(0);        break;    default:        return DefWindowProc(hWnd, message, wParam, lParam);    }    return 0;}

下面是效果图
这里写图片描述

0 0
原创粉丝点击