我正在尝试学习一些基本的 win32 api。我看到将项目添加到菜单栏教程中提到使用类似以下内容:
hMenubar = CreateMenu();
hMenu = CreateMenu();
AppendMenuW(hMenu, MF_STRING, IDM_FILE_NEW, L"&New");
AppendMenuW(hMenu, MF_STRING, IDM_FILE_OPEN, L"&Open");
AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL);
AppendMenuW(hMenu, MF_STRING, IDM_FILE_QUIT, L"&Quit");
AppendMenuW(hMenubar, MF_POPUP, (UINT_PTR)hMenu, L"&File");
但在 VS2013 的 C++ Desktop 的默认项目中,有一个“文件”和“帮助”菜单栏,里面有“退出”和“关于”。但他们所做的只是在 WndProc 中有一个像这样的开关:
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
我有几个问题。他们是如何在不使用 createmenu() 等的情况下添加文件和帮助菜单栏以及菜单栏中的 about 和 exit 项目的? IDM_ABOUT 和 IDM_EXIT 是什么意思?它们在菜单中具有这些内容,但是仅将它们放入 switch 语句中是否会将它们添加到菜单栏中?什么是 wmId 和 wmEvent?为什么要在 wmId 上切换?实际上是什么将这些项目添加到菜单栏?
如果您需要查看我的程序的更多代码,它只是 VS2013 中的非空白 C++ Win32 项目
感谢您提供的任何答案,如果有人能给我指出当前尽可能好的 win32 api C++ 教程的方向,我将不胜感激。