当用户右键单击通知图标数据(托盘图标)时,我想在我的 win32 应用程序(c++)中添加右键单击上下文菜单/子菜单。我可以制作一个简单的 1 级菜单,但找不到多级菜单的示例。
我想创建一个看起来像这样的菜单:
Settings -> Setting 1 -> Setting 2
-> Setting 3
-> Settings 4 -> Setting 5
-> Setting 6
Exit
我正在使用以下代码创建菜单:
HMENU hPopupMenu = CreatePopupMenu();
InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, IDM_EXIT, L"Exit");
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_RIGHTALIGN, p.x, p.y, 0, hWnd, NULL);
上面的代码放置在 notifyicondata 消息处理程序 (WM_RBUTTONUP) 中。
如何使用上述代码创建子菜单?我是否创建一个新的 HMENU 并将其插入到父菜单中?
困扰我的另一件事是菜单总是在触发右键单击事件时创建,因此每次触发它都会创建一个新的 HMENU。是否可以在应用程序启动时创建菜单(带有子菜单)并在应用程序关闭时销毁它?Windows是否处理菜单的破坏?
谢谢你的回复。