上下文菜单不显示

context menu does not show up

本文关键字:显示 菜单 上下文      更新时间:2023-10-16

在我的应用程序中,我希望有两个上下文菜单,它们在鼠标右键单击时显示,具体取决于单击的区域。

第一个是由编译器(visualstudio 2010)IDR_PPUP_EDIT生成的。我只添加了两个额外的按钮,它就起作用了。第二个是我想从头开始创建的,所以我准备了IDR_PGRC菜单资源,它具有相同的属性,有两个按钮。如果在框架右侧单击,则应显示idr_popup_edit,否则显示idr_pgrc。

我确信,每次右键单击框架时都会调用OnRButtonUp和OnCOntextMenu函数,但IDR_PGRC从未出现。

这就是我如何处理出现的上下文菜单:

#ifndef SHARED_HANDLERS
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);    
DEB("endingn");
#endif

相应地:

#ifndef SHARED_HANDLERS
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_PGRC, point.x, point.y, this, TRUE);
#endif

有人能给我任何暗示吗?我可能做错了?

如果您自己创建它,您很可能应该向它传递HMENU hmenuPopup,而不是资源ID。

(如果不是这样,那么请发布创建菜单的代码。)

因此,如果您使用CreatePopupMenu创建菜单,请将项目添加到其中,然后调用重载的ShowPopupMenu,您可以在其中传递菜单句柄(CMenu::GetSafeHMenu)。