请教:关于QQ菜单
请教一个基本天天都看到的界面是怎么实现的?如下:
QQ菜单 右键联系人->移动联系人至->组
右键联系人,建立弹出式菜单,移动联系人至,需要根据QQ组的个数和名称动态创建组的菜单
当组的菜单菜单创建完成后,怎么产生消息呢?
譬如我要将该联系人从当前组移动至组A,鼠标单击即移动成功。
[解决办法]
第一步:
在程序的适当位置(右键单击联系人响应函数里)动态生成菜单:
String groupStr[] = GetDocument()->m_groupStr;//动态获取组的信息(一般以成员变量的方式保存到CDocument中或其派生类中)
CMenu menu; //创建弹出菜单
menu.CreatePopupMenu();
for(int i=0; i<groupID.length; i++)
{
//将groupStr[i]中保存的组的字符串添加进Popup菜单
GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,groupStr[i]);
menu.AppendMenu(MF_STRING,IDM_TEST(IDM_USER+i),groupStr[i]);
menu.Detach();
}
第二步:声明Popup菜单响应函数
afx_msg void OnMoveToGroupID(int groupID);
第三步:将消息响应函数与菜单项关联起来
ON_COMMAND(groupID[i].id,OnMoveToGroupID)
第四步:在OnMoveToGroupID(int groupID)判断鼠标单击的位置以此来判断选中了那个菜单项,然后switch/case判断就可以了。最后一步是关键,大致流程就是这样子。