#include <windows.h>#include <iostream>CHAR szText[256] = { 0 };#define PrintLog(x) WriteConsole(g_hStdout, x, strlen(x), NULL, NULL)HINSTANCE g_hInst = NULL; //窗口句柄HANDLE g_hStdout = NULL; //控制台句柄//OnCreatevoid OnCreate(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam){//下压式ButtonCreateWindow("BUTTON", "PUSH_BUTTON", WS_CHILD | WS_VISIBLE, 100, 100, 200, 40, hWnd, (HMENU)1001, g_hInst, NULL);//三态按键CreateWindow("BUTTON", "我是三态按键", WS_CHILD | WS_VISIBLE | BS_AUTO3STATE|BS_PUSHLIKE/*若不加这个风格,则像CheckBox*/, 400, 100, 200, 40, hWnd, (HMENU)2001, g_hInst, NULL);//分组按钮CreateWindow("BUTTON", "分组一", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 100, 200, 300, 300,hWnd, (HMENU)3001, g_hInst, NULL);//多选按钮,CheckBoxCreateWindow("BUTTON", "checkbox", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 120, 220, 200, 30,hWnd, (HMENU)4001, g_hInst, NULL);CreateWindow("BUTTON", "Auto_check_box", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 120, 250, 200, 30,hWnd, (HMENU)4002, g_hInst, NULL);//单选按钮CreateWindow("BUTTON", "A", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON|WS_GROUP/*分组,把AB分成一组*/,120, 300, 100, 30, hWnd, (HMENU)5001, g_hInst,NULL);CreateWindow("BUTTON", "B", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,120, 330, 100, 30, hWnd, (HMENU)5002, g_hInst,NULL);CreateWindow("BUTTON", "C", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON|WS_GROUP/*分组,把CD分成一组*/,120, 360, 100, 30, hWnd, (HMENU)5003, g_hInst,NULL);CreateWindow("BUTTON", "D", WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,120, 390, 100, 30, hWnd, (HMENU)5004, g_hInst,NULL);}//响应按钮void OnCommand(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam){int nNotifyCode = HIWORD(wParam);int nEventID = LOWORD(wParam);switch (nEventID){case 1001:switch (nNotifyCode){//push_button消息的响应,一般只处理点击消息,其它消息很少处理case BN_CLICKED:MessageBox(NULL, "Hello push_button!", "button", MB_OK);break;}break;case 4002:{HWND hCtrl = GetDlgItem(hWnd, 4002);LRESULT nCheck = 0;switch (nNotifyCode){//push_button消息的响应,一般只处理点击消息,其它消息很少处理case BN_CLICKED:{//获取当前CheckBox的状态nCheck = SendMessage(hCtrl, BM_GETCHECK, 0, 0);//判断当前状态是否被选择if (nCheck & BST_CHECKED){//设置成不选择状态SendMessage(hCtrl, BM_SETCHECK, BST_UNCHECKED, 0);}else{//设置成选择状态SendMessage(hCtrl, BM_SETCHECK, BST_CHECKED, 0);}break;}}break;}}}LRESULT CALLBACK WndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam){switch (nMsg){case WM_CREATE:OnCreate(hWnd, nMsg, wParam, lParam);break;case WM_COMMAND:OnCommand(hWnd, nMsg, wParam, lParam);break;case WM_DESTROY:PostQuitMessage(0);break;}return DefWindowProc(hWnd, nMsg, wParam, lParam);}BOOL RegisterWnd(LPSTR pszClassName){WNDCLASSEX wce = { 0 };wce.cbSize = sizeof(wce);wce.cbClsExtra = 0;wce.cbWndExtra = 0;wce.hbrBackground = HBRUSH(COLOR_BTNFACE + 1);wce.hCursor = NULL;wce.hIcon = NULL;wce.hIconSm = NULL;wce.hInstance = g_hInst;wce.lpfnWndProc = WndProc;wce.lpszClassName = pszClassName;wce.lpszMenuName = NULL;wce.style = CS_HREDRAW | CS_VREDRAW;ATOM atom = RegisterClassEx(&wce);if (atom == NULL){return FALSE;}else{return TRUE;}}HWND CreateWnd(LPSTR pszClassName){HWND hWnd = CreateWindowEx(0, pszClassName, "灭天", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, g_hInst, 0);return hWnd;}void ShowWnd(HWND hWnd){ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd);}void Msg(){MSG msg = { 0 };while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}}void ConsoleWnd(){AllocConsole();g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);CHAR szText[] = "Debug start:\n";WriteConsole(g_hStdout, szText, strlen(szText), NULL, NULL);}int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd){g_hInst = hInstance;//ConsoleWnd();RegisterWnd("oooo");HWND hWnd = CreateWnd("oooo");ShowWnd(hWnd);Msg();return 0;}
原文:http://www.cnblogs.com/nfking/p/5573174.html