Radio Button Control Example

#include <windows.h> #define ID_BLUE 1 #define ID_GREEN 2 #define ID_RED 3 int red = 0; int green = 0; int blue = 0; COLORREF bk_color; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; MSG msg; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = NULL; wc.lpszClassName = TEXT("MyWindowClass"); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); RegisterClassEx(&wc); CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("MyWindowClass"), TEXT("Check Box Demo"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 700, 350, NULL, NULL, hInstance, NULL); while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HBRUSH hBrush; RECT rect; int checked; switch (msg) { case WM_CREATE: CreateWindow( TEXT("BUTTON"), TEXT("Blue"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 200, 60, 70, 30, hwnd, (HMENU)ID_BLUE, NULL, NULL); CreateWindow( TEXT("BUTTON"), TEXT("Green"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 280, 60, 70, 30, hwnd, (HMENU)ID_GREEN, NULL, NULL); CreateWindow( TEXT("BUTTON"), TEXT("Red"), WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 360, 60, 70, 30, hwnd, (HMENU)ID_RED, NULL, NULL); return 0; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) { switch (LOWORD(wParam)) { case ID_BLUE: checked = IsDlgButtonChecked(hwnd, ID_BLUE); blue = checked * 255; break; case ID_GREEN: checked = IsDlgButtonChecked(hwnd, ID_GREEN); green = checked * 255; break; case ID_RED: checked = IsDlgButtonChecked(hwnd, ID_RED); red = checked * 255; break; } InvalidateRect(hwnd, NULL, TRUE); } return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); bk_color = RGB(red, green, blue); hBrush = CreateSolidBrush(bk_color); GetClientRect(hwnd, &rect); FillRect(hdc, &rect, hBrush); DeleteObject(hBrush); EndPaint(hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); }