显示没有内容的CMFCPopupMenu菜单

时间:2013-09-05 20:30:41

标签: windows mfc contextmenu

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

  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。

感谢。

2 个答案:

答案 0 :(得分:0)

我不明白为什么我的方法不起作用,但我通过在资源中定义菜单找到了解决方法,并且这样做:

  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);

那是有效的,唯一的问题是,根据状态和选择,有一个带动态条目的菜单有点复杂。

答案 1 :(得分:0)

CMFCPopupMenu* pPopupMenu = new CMFCPopupMenu;
if (pPopupMenu->Create(pWndOwner, point.x, point.y, NULL, FALSE, TRUE))
{
    pPopupMenu->InsertItem(CMFCToolBarMenuButton(57645, NULL, -1, _T("Command 1")), -1);
    pPopupMenu->InsertItem(CMFCToolBarMenuButton(57646, NULL, -1, _T("Command 2")), -1);
    pPopupMenu->RecalcLayout();
}

插入

后需要调用 RecalcLayout()