2. 我在资源里定义了一个菜单ID为:IDR_MENU1,然后在视图的OnRButtonDown()里,设置一个右键菜单,这样会出错:
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.LoadMenu(IDR_MENU1);
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
而这样就不会:
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.AppendMenu(MF_STRING,111,"A");
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
右键菜单不可以LoadMenu吗?应该不会吧,那问题出在哪里呢?
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.LoadMenu(IDR_MENU1);
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
而这样就不会:
ClientToScreen(&point);
CMenu menu;
if(menu.CreatePopupMenu())
{
menu.AppendMenu(MF_STRING,111,"A");
menu.TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
右键菜单不可以LoadMenu吗?应该不会吧,那问题出在哪里呢?
CMenu menu, *pmenu = NULL; {
menu.LoadMenu(IDR_MENU1);
pmenu = menu.GetSubMenu(0);
if(pmenu)
pmenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
}
if (oMenu.LoadMenu(IDR_MENU1))
{
CMenu* pPopup = oMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CPoint oPoint;
GetCursorPos( &oPoint );
SetForegroundWindow();
pPopup->TrackPopupMenu(
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
oPoint.x, oPoint.y, this);
}
}
break;
CreatePopupMenu
是不同创建菜单句柄的方法,
你已通过CreatePopupMenu创建了菜单,此时是空菜单,只能通过AppendMenu,InertMent来增加菜单项