Win32 Clickable右键单击菜单

时间:2016-03-08 23:03:01

标签: c++ windows g++

我想制作一个带有可点击按钮的右键菜单。我已经有了一个代码,它创建了一个对任何东西都没有反应的右键菜单,其代码如下:

HMENU hPopupMenu = CreatePopupMenu();
        POINT p;
        if (GetCursorPos(&p))
        {
            //cursor position now in p.x and p.y
        }
        InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING , NULL, _T("play"));
        SetForegroundWindow(hwnd);
        TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, p.x, p.y, 0, hwnd, NULL);
        break;

现在我如何拥有上面的代码如何给该播放按钮一个动作?我用谷歌搜索了一堆,但我找不到任何答案。

2 个答案:

答案 0 :(得分:0)

在应用程序WndProc中处理WM_COMMAND消息。例如:

case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case IDC_MAIN_BUTTON:
                {
                    char buffer[256];
                    SendMessage(hEdit,
                        WM_GETTEXT,
                        sizeof(buffer)/sizeof(buffer[0]),
                        reinterpret_cast<LPARAM>(buffer));
                    MessageBox(NULL,
                        buffer,
                        "Information",
                        MB_ICONINFORMATION);
                }
                break;
            }
            break;

答案 1 :(得分:0)

来自documentation

  

当用户从菜单中选择命令项时,系统会向窗口过程发送WM_COMMAND消息。 WM_COMMAND消息的wParam参数的低位字包含所选项的标识符。窗口过程应检查标识符并相应地处理消息。

您没有为菜单项提供ID并传递NULL。如果您需要多于一个菜单项,您将需要补救。