执行菜单栏操作

时间:2017-05-13 19:56:33

标签: c++ windows

我有一个测试程序,我用它来玩菜单栏。它看起来像这样:

(这里应该有一个图像。如果没有,它只是一个带菜单栏的小窗口。)

我的代码很简单,我需要设计明智。我唯一需要帮助的是在点击它们时执行操作。

这就是我所拥有的:

switch (message)
{
    case WM_CREATE:
    {
        HMENU hMunubar = CreateMenu();
        HMENU hFile = CreateMenu();
        HMENU hEdit = CreateMenu();
        HMENU hHelp = CreateMenu();

        /* Create the "File" tab */
        AppendMenu(hMunubar, MF_POPUP, (UINT_PTR) hFile,    "File");

        AppendMenu(hFile, MF_STRING, (UINT_PTR) 1,      TEXT("Exit      Alt+f4"));


        /* Create the "Edit" tab */
        AppendMenu(hMunubar, MF_POPUP, (UINT_PTR) hEdit,    "Edit");

        AppendMenu(hEdit, MF_STRING, (UINT_PTR) 2,      TEXT("Copy      Ctrl+C"));
        AppendMenu(hEdit, MF_STRING, (UINT_PTR) 3,      TEXT("Cut       Ctrl+X"));
        AppendMenu(hEdit, MF_STRING, (UINT_PTR) 4,      TEXT("Paste     Ctrl+V"));


        /* Create the "Help" tab */
        AppendMenu(hMunubar, MF_POPUP, (UINT_PTR) hHelp,    "Help");

        AppendMenu(hHelp, MF_STRING, (UINT_PTR) 5,      TEXT("Visit Forum"));

        SetMenu(hwnd, hMunubar);
        break;
    }
    case WM_DESTROY:
        PostQuitMessage (0);
        break;
    default:
        return DefWindowProc (hwnd, message, wParam, lParam);
}

我学会了如何从this youtube video.创建菜单。这个人深入地解释了如何创建菜单,但没有解释如何使用它做任何事情。现在,当我点击File-> Exit。

时,我想要它做的就是退出

我尝试在switch (message)函数中使用它:

case WM_COMMAND:
{
    if(LOWORD(wParam) == 1){
        return 0;
    }
        break;
}

但那没用。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

第一个 if 表达式检查传入的WM_COMMAND消息是否引用菜单命令。第二个 if 表达式检查菜单标识符,因此您可以对不同的菜单选项应用不同的操作。

case WM_COMMAND:
{
    if (!HIWORD(wParam))
    {
        if (LOWORD(wParam) == 1) // Checks for the menu identifier of the Exit option
        {
            DestroyWindow(hwnd);
        }
    }

    return 0;
}

我建议您创建宏定义,或者实际上因为您将问题标记为C ++,常量变量提供表示具有有意义名称的菜单标识符的数字常量。