我正在使用cmfcpopup菜单创建右键单击弹出菜单。问题是,第一次显示菜单时,只显示带阴影的菜单框,但内容是白色的。第二次显示菜单时没有问题。代码如下所示:

  CPoint point;
  ::GetCursorPos (&point);

  CMFCPopupMenu* pop = new CMFCPopupMenu();

  pop->InsertItem(CMFCToolBarMenuButton(ID_COMMAND_1,NULL,-1,_T("Command 1")));
  pop->InsertItem(CMFCToolBarMenuButton(ID_COMMAND_2,NULL,-1,_T("Command 2")));
  pop->InsertItem(CMFCToolBarMenuButton(ID_COMMAND_3,NULL,-1,_T("Command 3")));
  pop->InsertItem(CMFCToolBarMenuButton(ID_COMMAND_4,NULL,-1,_T("Command 4")));

  pop->Create(this,point.x,point.y,NULL,0,true);

父类基于cdialogex。
谢谢。

最佳答案

我不明白为什么我的方法不起作用,但我在ressource中定义了菜单,找到了一种解决方法,如下所示:

  CMenu menu;
  menu.LoadMenu(IDR_SESSION_MENU);
  HMENU hMenu = menu.GetSubMenu (0)->Detach ();

  CMFCPopupMenu* pMenu = theApp.GetContextMenuManager()->ShowPopupMenu(hMenu, point.x, point.y, this, TRUE);

这是可行的,唯一的问题是,有一个动态条目依赖于状态和选择的菜单有点复杂。

07-24 09:44
查看更多