我用下边的方法创建了一个右键弹出菜单,可不知道怎么个它添加2级菜单(就是让它后边有小箭头,再弹出菜单)
CMenu m_pMenu;
CPoint point;
m_pMenu.CreatePopupMenu();
m_pMenu.AppendMenu(MF_STRING,M_INSERTSHIP, "将所选设备添加到");
int ShipNum=m_ShipCode.GetCount();
CString shipname;
for (int i=1;i<ShipNum;i++)
{
m_ShipCode.GetLBText(i,shipname);//这句有错 m_pMenu.AppendMenu(MF_STRING|MF_POPUP,(UINT)m_pMenu.GetSubMenu(1)->m_hMenu, shipname); }
GetCursorPos(&point);
m_pMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
--------------------
“将所选设备添加到”这个菜单项可以出来,M_INSERTSHIP是我在菜单资源中创建的一个菜单的ID,我想在他后边创建子菜单,把组和框(m_ShipCode)中的项加进去,不知道为啥,老出错,大家帮忙看看,搞了半天了,郁闷啊,谢谢!!
CMenu m_pMenu;
CPoint point;
m_pMenu.CreatePopupMenu();
m_pMenu.AppendMenu(MF_STRING,M_INSERTSHIP, "将所选设备添加到");
int ShipNum=m_ShipCode.GetCount();
CString shipname;
for (int i=1;i<ShipNum;i++)
{
m_ShipCode.GetLBText(i,shipname);//这句有错 m_pMenu.AppendMenu(MF_STRING|MF_POPUP,(UINT)m_pMenu.GetSubMenu(1)->m_hMenu, shipname); }
GetCursorPos(&point);
m_pMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
--------------------
“将所选设备添加到”这个菜单项可以出来,M_INSERTSHIP是我在菜单资源中创建的一个菜单的ID,我想在他后边创建子菜单,把组和框(m_ShipCode)中的项加进去,不知道为啥,老出错,大家帮忙看看,搞了半天了,郁闷啊,谢谢!!
popMenu.CreatePopupMenu();m_pMenu.AppendMenu(.....);
m_pMenu.AppendMenu(MF_POPUP,(UINT)popMenu.m_hMenu, "将所选设备添加到");
m_pMenu.AppendMenu(MF_STRING, ID_ZU, "组");
------------------
CMenu MainMenu,SubMenu;
MainMenu.CreateMenu();
SubMenu.CreatePopupMenu();
MainMenu.AppendMenu(MF_POPUP,(UINT)SubMenu.m_hMenu,"添加到");
CPoint point;
int ShipNum=m_ShipCode.GetCount();
CString shipname;
if (ShipNum>1)
{
for (int i=1;i<ShipNum;i++)
{
m_ShipCode.GetLBText(i,shipname);
MainMenu.AppendMenu(MF_STRING,10000+i,shipname);
}
GetCursorPos(&point);
MainMenu.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
----------------------------
是不是那里写的不对?,我要的效果就是右键在列表框中单击,弹出一个“添加到”的菜单,指向“添加到”就弹出它的2级菜单(组合框中的各个值)
放在了for循环之后,将for循环中的MainMenu改为了SubMenu,这样的话可以弹出二级菜单了,
但是弹出的一级菜单却是一个细条,不是“添加到”,这是为啥?
出现窄条是因为MainMenu.CreateMenu();应该也是MainMenu.CreatePopMenu();
多谢lixiaosan(小三)的重要的思路(框架)
想最后请问一下:这样创建的菜单用不用考虑资源的释放问题?
Public
CMenu MainMenu,SubMenu;
当再次打开对话框(非模式)时,会出错,后来我在DestroyWindow()中添加了
MainMenu.DestroyMenu();
SubMenu.DestroyMenu();
才解决问题,可能就是因为没有销毁,顺便问一下,我在非模式对话框中添加的tooltip控件,怎么在对话框DestroyWindow()时释放掉,我的老是因为没有释放而出错,查了很多资料,不知道tooltip怎么销毁(模式对话框好像不用考虑销毁问题)
如果是这样的话,你需要在主对话框中检测非模态对话框的指针是否为NULL,如果不为NULL,则需在主对话框中释放非模态对话框的资源