Щелчок правой кнопкой мыши в контекстном меню WinAPI

#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: Потому что так часто удобнее? Но вежливо обращаться за помощью только в тех случаях, когда документация оставляет неясным.