/**GetDlgItem 获取窗口句柄
SendMessage 发送消息
MoveWindow
GetWindowText
getParent
ShowWindow空间被用户操作的时候,会给父窗口发送消息 我们根据用户的动作去实现一些功能
我们需要使用代码控制去干一些事情,一般情况下都是GetDlgItem 获取窗口句柄,根据子控件ID获取到子控件,再通过
SendMessage发送消息控制控件的行为标准控件【可以直接使用,数量少,功能简单】
按钮,复选框,单选框,静态文本框,图片,复合框,编辑框通用控件【需要做一些初始化操作,数量多,功能强大】*/#include <Windows.h>
#include <CommCtrl.h>
#include "resource.h"
#include <windowsx.h>
INT_PTR CALLBACK Dlgproc(HWND hWnd,UINT uParam,WPARAM wParam,LPARAM lParam
);
// 居中函数
void CenterWindow(HWND hWnd);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{DialogBoxW(hInst, MAKEINTRESOURCEW(IDD_DIALOG1), NULL, Dlgproc);return 0;
}INT_PTR CALLBACK Dlgproc(HWND hWnd,UINT uParam,WPARAM wParam,LPARAM lParam
)
{switch (uParam){case WM_INITDIALOG:{// DPI自适应UINT dpi = GetDpiForWindow(hWnd);int baseWidth = 500;int baseHeight = 350;int scaledWidth = MulDiv(baseWidth, dpi, 96);int scaledHeight = MulDiv(baseHeight, dpi, 96);SetWindowPos(hWnd, NULL, 0, 0, scaledWidth, scaledHeight,SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);// 居中显示CenterWindow(hWnd);// 方式1HWND hchecked_1 = GetDlgItem(hWnd, IDC_CHECK1);SendMessageW(hchecked_1, BM_SETCHECK, BST_CHECKED, 0);//方式2 SendDlgItemMessageW(hWnd, IDC_CHECK2, BM_SETCHECK, BST_CHECKED, 0);//方式3 需要引入#include <windowsx.h>Button_SetCheck(GetDlgItem(hWnd, IDC_CHECK3), BST_CHECKED);break;}case WM_CLOSE: {EndDialog(hWnd, 0);break;}case WM_COMMAND:{WORD controlId = LOWORD(wParam);switch (controlId){case IDOK: {WCHAR buff[20] = { 0 };//WORD controlId = LOWORD(wParam);for (UINT btnid = IDC_CHECK1; btnid <= IDC_CHECK3; btnid++){UINT Checked = SendDlgItemMessageW(hWnd, btnid, BM_GETCHECK, 0, 0);if (Checked){GetDlgItemTextW(hWnd, btnid, buff, 20);MessageBoxW(hWnd, buff, L"结果", MB_OK);}}break;}case IDC_BUTTON1: {WCHAR buff[20] = { 0 };//WORD controlId = LOWORD(wParam);for (UINT btnid = IDC_RADIO1; btnid <= IDC_RADIO3; btnid++){UINT Checked = SendDlgItemMessageW(hWnd, btnid, BM_GETCHECK, 0, 0);if (Checked){GetDlgItemTextW(hWnd, btnid, buff, 20);MessageBoxW(hWnd, buff, L"结果", MB_OK);}}break;}default:break;}break;}default:return FALSE;}return TRUE;}// 居中函数
void CenterWindow(HWND hWnd)
{RECT rc;GetWindowRect(hWnd, &rc);int width = rc.right - rc.left;int height = rc.bottom - rc.top;int screenWidth = GetSystemMetrics(SM_CXSCREEN);int screenHeight = GetSystemMetrics(SM_CYSCREEN);SetWindowPos(hWnd, NULL,(screenWidth - width) / 2,(screenHeight - height) / 2,0, 0, SWP_NOZORDER | SWP_NOSIZE);
}