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 中的动态菜单的主要内容,如果未能解决你的问题,请参考以下文章