实验3: 在所给win32应用程序代码的基础上,修改: 增加一个菜单,“计算”; “计算”下拉后有“正弦”与余弦。 要求:WIN32程序。
时间: 2023-10-06 11:04:26 浏览: 38
以下是修改后的代码:
```c++
#include <windows.h>
#include <string.h>
#include <math.h>
#define ID_FILE_EXIT 9001
#define ID_HELP_ABOUT 9002
#define ID_CALC_SIN 9003
#define ID_CALC_COS 9004
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wc;
HWND hwnd;
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 = "WindowClass";
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&wc)) {
MessageBox(NULL, "窗口注册失败!", "错误", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// 创建窗口
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
"WindowClass",
"Win32应用程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 450, 350,
NULL, NULL, hInstance, NULL);
if (hwnd == NULL) {
MessageBox(NULL, "窗口创建失败!", "错误", MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// 显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 消息循环
while (GetMessage(&Msg, NULL, 0, 0) > 0) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_CREATE:
// 创建菜单
HMENU hMenu, hSubMenu;
hMenu = CreateMenu();
hSubMenu = CreatePopupMenu();
AppendMenu(hSubMenu, MF_STRING, ID_CALC_SIN, "正弦");
AppendMenu(hSubMenu, MF_STRING, ID_CALC_COS, "余弦");
AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hSubMenu, "计算");
SetMenu(hwnd, hMenu);
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case ID_FILE_EXIT:
// 退出程序
PostMessage(hwnd, WM_CLOSE, 0, 0);
break;
case ID_HELP_ABOUT:
// 关于对话框
MessageBox(hwnd, "Win32应用程序\n作者:XXX", "关于", MB_OK);
break;
case ID_CALC_SIN:
// 计算正弦
MessageBox(hwnd, "计算正弦", "计算", MB_OK);
break;
case ID_CALC_COS:
// 计算余弦
MessageBox(hwnd, "计算余弦", "计算", MB_OK);
break;
}
break;
case WM_CLOSE:
// 关闭窗口
if (MessageBox(hwnd, "确定要退出程序吗?", "提示", MB_OKCANCEL) == IDOK) {
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
// 销毁窗口
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
```
在原来的代码基础上,我们增加了一个菜单栏,并在菜单栏中增加了“计算”菜单,该菜单下拉后有“正弦”和“余弦”两个选项。同时,在`WM_COMMAND`消息中,我们为这两个选项分别设置了处理函数,这里只是弹出了一个MessageBox,实际中可以在这里进行相应的计算操作。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)