#c #winapi #contextmenu
#c #winapi #contextmenu
Вопрос:
Я создаю контекстное меню, подобное этому:
Файл ресурсов:
IDR_CONTEXT MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "Add amp;last", ID_ADDLAST
MENUITEM "Add amp;before", ID_ADDBEFORE
MENUITEM "Add amp;after", ID_ADDAFTER
MENUITEM "amp;Remove", ID_REMOVE
END
END
И оконная процедура:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_RBUTTONDOWN:
{
POINT cursor;
GetCursorPos(amp;cursor);
TrackPopupMenu((HMENU) GetSubMenu(LoadMenu(hInstance, MAKEINTRESOURCE(IDR_CONTEXT)), 0), TPM_LEFTALIGN, cursor.x, cursor.y, 0, hWnd, NULL);
}
break;
}
}
Но это не позволяет мне щелкнуть правой кнопкой мыши по элементам в контекстном меню. Я могу щелкнуть по ним только левой кнопкой мыши…
Как это исправить?
Ответ №1:
Если вы прочтете страницу документации для TrackPopupMenu
, вы найдете флаг, описанный как «Пользователь может выбирать пункты меню как левой, так и правой кнопками мыши».
Комментарии:
1. Спасибо! Почему я вообще забыл посмотреть документацию?
2. @Midas: Потому что так часто удобнее? Но вежливо обращаться за помощью только в тех случаях, когда документация оставляет неясным.