MFC 中的动态菜单

Posted

技术标签:

【中文标题】MFC 中的动态菜单【英文标题】:Dynamic menus in MFC 【发布时间】:2012-06-20 16:33:21 【问题描述】:

我需要在我正在编写的 VS2010 SDI 应用程序中创建一些动态菜单。这个我看过,但不是很懂 Dynamic menu using mfc

目前,我什至不知道如何使用 GetMenu 从我的 Doc 文件中获取菜单句柄。我正在尝试这个,但它说 GetMenu 不接受零参数,尽管我见过的许多例子都清楚地表明了这一点。

CMenu *menu = GetMenu();


        menu->AppendMenu(MF_STRING, ID_HIDE, _T("Text"));

我要做的就是在子菜单下添加一个文件列表,从数据库中选择(因此是动态部分),以便用户可以选择他们想要处理的文件。

谢谢, 詹姆斯

【问题讨论】:

我相信它需要HWND,所以它知道要获取哪个菜单。 嗨,如果你能告诉我我会怎么做,我将不胜感激? 您可以使用多种方式,包括FindWindow 来获取句柄。我不确定所有 mfc 都为此提供什么,但是您可以将 HWND 传递进去。对于子菜单,您可以使用 GetSubMenu 【参考方案1】:

如果您在从CWnd 派生的窗口类中调用GetMenu,您将调用CWnd::GetMenu,它不需要窗口句柄。如果您从其他任何地方调用它,您将获得::GetMenu(HWND),并且您需要传递一个窗口句柄。您可以从任何带有 m_hWnd 成员的 CWnd 对象或调用 GetSafeHwnd() 获取句柄。

【讨论】:

我发现这个站点对于展示如何获取不同的对象类型非常有用,forums.codeguru.com/…

以上是关于MFC 中的动态菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何在mfc中动态添加子菜单

mfc 多文档中怎样动态添加菜单项?

MFC动态菜单

在运行时动态分配 MFC 命令 ID

vs2013怎么用mfc添加菜单项消息响应函数

布局中的 CakePHP 动态菜单内容