Я хотел бы добавить контекстное меню / подменю правой кнопкой мыши к моему приложению win32 (c ++), когда пользователь щелкает правой кнопкой мыши данные уведомлений (значок в трее). Я могу сделать простое одноуровневое меню, но не могу найти пример для многоуровневых меню.
Я бы хотел создать меню, которое выглядит примерно так:
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. Можно ли создать меню (с подменю) при запуске приложения и уничтожить его при закрытии приложения? Окна обрабатывают уничтожение меню?
Спасибо за ответ.