下面程序的主界面上加上一个文本输入框,一个文本框,一个列表(含有广东各地地名),一个复选键,一个按钮(按键后在文本框显示文本输入框和列表选中内容)#include <windows.h>
#include <commdlg.h>
#include <stdio.h>
// 菜单命令标识符
#define IDM_OPEN 1001
#define IDM_SAVE 1002
#define IDM_EXIT 1003
#define IDM_ABOUT 1004
// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_COMMAND: {
// 处理菜单命令
switch (LOWORD(wParam)) {
case IDM_OPEN: {
// 创建打开文件对话框
OPENFILENAMEW ofn;
wchar_t szFile[260] = { 0 };
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrTitle = L"选择要打开的文件";
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileNameW(&ofn)) {
MessageBoxW(hWnd, szFile, L"已选择文件", MB_OK | MB_ICONINFORMATION);
}
break;
}
case IDM_SAVE: {
// 创建保存文件对话框
OPENFILENAMEW ofn;
wchar_t szFile[260] = { 0 };
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"文本文件 (*.txt)\0*.txt\0所有文件 (*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrDefExt = L"txt";
ofn.lpstrTitle = L"保存文件";
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
if (GetSaveFileNameW(&ofn)) {
wchar_t message[300];
swprintf(message, 300, L"文件已保存到:\n%s", szFile);
MessageBoxW(hWnd, message, L"保存成功", MB_OK | MB_ICONINFORMATION);
}
break;
}
case IDM_EXIT:
PostQuitMessage(0);
break;
case IDM_ABOUT:
MessageBoxW(hWnd, L"Windows GUI 示例程序\n版本 1.0", L"关于", MB_OK | MB_ICONINFORMATION);
break;
}
break;
}
case WM_PAINT: {
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// 绘制窗口内容
RECT rect;
GetClientRect(hWnd, &rect);
DrawTextW(hdc, L"欢迎使用 Windows GUI 程序", -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hWnd, &ps);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProcW(hWnd, msg, wParam, lParam);
}
return 0;
}
// 创建主菜单
HMENU CreateMainMenu() {
HMENU hMenu = CreateMenu();
HMENU hFileMenu = CreatePopupMenu();
HMENU hHelpMenu = CreatePopupMenu();
// 文件菜单
AppendMenuW(hFileMenu, MF_STRING, IDM_OPEN, L"打开(&O)");
AppendMenuW(hFileMenu, MF_STRING, IDM_SAVE, L"保存(&S)");
AppendMenuW(hFileMenu, MF_SEPARATOR, 0, NULL);
AppendMenuW(hFileMenu, MF_STRING, IDM_EXIT, L"退出(&X)");
// 帮助菜单
AppendMenuW(hHelpMenu, MF_STRING, IDM_ABOUT, L"关于(&A)");
// 主菜单栏
AppendMenuW(hMenu, MF_POPUP, (UINT_PTR)hFileMenu, L"文件(&F)");
AppendMenuW(hMenu, MF_POPUP, (UINT_PTR)hHelpMenu, L"帮助(&H)");
return hMenu;
}
// 程序入口点
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) {
// 注册窗口类
const wchar_t CLASS_NAME[] = L"MainWindowClass";
WNDCLASSW wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
if (!RegisterClassW(&wc)) {
MessageBoxW(NULL, L"窗口类注册失败!", L"错误", MB_ICONERROR);
return 1;
}
// 创建菜单
HMENU hMenu = CreateMainMenu();
// 创建窗口
HWND hWnd = CreateWindowExW(
0,
CLASS_NAME,
L"Windows GUI 示例程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
600, 400,
NULL,
hMenu, // 附加菜单
hInstance,
NULL
);
if (hWnd == NULL) {
MessageBoxW(NULL, L"窗口创建失败!", L"错误", MB_ICONERROR);
return 1;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// 消息循环
MSG msg;
while (GetMessageW(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
return (int)msg.wParam;
}
最新发布