在所给win32应用程序代码的基础上,修改: 增加一个菜单,“计算”; “计算”下拉后有“正弦”与余弦。 要求:WIN32程序。
时间: 2023-09-20 20:09:09 浏览: 33
以下修改后的代码实现:
```c++
#include <windows.h>
#include <math.h>
#define ID_CALC_SIN 1001
#define ID_CALC_COS 1002
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
void OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = L"MainWindowClass";
if (!RegisterClass(&wc)) {
MessageBox(NULL, L"RegisterClass failed", L"Error", MB_OK);
return 0;
}
HWND hWnd = CreateWindow(L"MainWindowClass", L"Win32 App with Menu", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
if (!hWnd) {
MessageBox(NULL, L"CreateWindow failed", L"Error", MB_OK);
return 0;
}
// Create menu
HMENU hMenu = CreateMenu();
HMENU hSubMenu = CreatePopupMenu();
AppendMenu(hSubMenu, MF_STRING, ID_CALC_SIN, L"正弦");
AppendMenu(hSubMenu, MF_STRING, ID_CALC_COS, L"余弦");
AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT_PTR)hSubMenu, L"计算");
SetMenu(hWnd, hMenu);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_COMMAND:
OnCommand(hWnd, LOWORD(wParam), (HWND)lParam, HIWORD(wParam));
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
void OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify) {
switch (id) {
case ID_CALC_SIN:
MessageBox(hWnd, L"计算正弦", L"提示", MB_OK);
break;
case ID_CALC_COS:
MessageBox(hWnd, L"计算余弦", L"提示", MB_OK);
break;
default:
break;
}
}
```
在原来的窗口程序基础上,我们增加了一个菜单“计算”,并在下拉菜单中添加了“正弦”和“余弦”两个选项。在 `OnCommand` 函数中,我们对这两个选项的点击进行响应,弹出相应的提示框。
需要注意的是,在创建菜单时,我们使用了 `CreateMenu` 和 `CreatePopupMenu` 函数创建了菜单和下拉菜单,并使用 `AppendMenu` 函数将选项添加到下拉菜单中。最后,使用 `SetMenu` 函数将菜单设置到窗口中。