请问,怎么创建弹出式菜单?具体一点啊,我是新手啊!
解决方案 »
- ADO连接数据库出错
- 中文域名问题
- 函数没被声明成static 型在内存中也占了字节的吗
- COledatetime在2000和xp下的版本冲突问题。
- 在线等,对话框中如何使用ToolBar??!!
- WIN98和WIN2000的关机有什么不同,WIN2000如何实现关机?
- 高程课本(清华出版社)上的关于快速排序的疑问?p468
- 在ATL的COM中如何判断一个文件存在(FileExist)?
- 注册在Video Capture Source下的filter可以被QQ,msn找到,但是flash找不到
- 高手帮忙看看这段代码什么意思???
- 用AllocConsole()创建的外挂console能用c++的cout进行输出操作吗?
- 用AllocConsole()创建的外挂console能用c++的cout进行输出操作吗?
{
CMenu* menu_bar = AfxGetMainWnd()->GetMenu();
CMenu* file_menu = menu_bar->GetSubMenu(0);
ASSERT(file_menu); file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x,
point.y, this);
}
当然在右键响应消息处理也行
#define ID_MENU_1 10000
#define ID_MENU_2 10001在OnRButtonDown函数中使用如下代码:CMenu menu;
if (menu.CreatePopupMenu())
{
menu.AppendMenu(MF_STRING, ID_MENU_1, _T("菜单1"));
menu.AppendMenu(MF_STRING, ID_MENU_2, _T("菜单2")); menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, this);
menu.DestroyMenu();
}在.h文件中定义如下函数
afx_msg void OnMenu1();
afx_msg void OnMenu2();在.cpp文件的END_MESSAGE_MAP()之前加上如下语句
ON_COMMAND(ID_MENU_1, OnMenu1)
ON_COMMAND(ID_MENU_2, OnMenu2)然后实现这两个函数就可以了,如果你的菜单条目太多的话,你可以使用
ON_COMMAND_RANGE如:
#define ID_MENU_BEGIN 10000
#define ID_MENU_END 10001函数定义要改为
afx_msg void OnMenu(UINT nID);ON_COMMAND_RANGE(ID_MENU_BEGIN, ID_MENU_END, OnMenu)
用右键弹出:
映射ONRBUTTONDOWN;
CMyDialog::OnRButtonDown(...,CPoint point)
{
LPPOINT m_point=new tagPOINT;
CMenu menu;
menu.CreatePopupMenu();
menu.Append(MF_STRING,0,"JFKDJ");
menu.Append(MF_STRING,0,"DFF");
menu.TrackPopupMenu();
menu.destroy();
}
自己试试吧
我要更正
menu.TrackPopupMenu(TPM_LEFTALIGN,m_point->x,m_point->y,0,this,0);
void CTest1View::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu m_XpMenu;
m_XpMenu.LoadMenu(IDR_MYMENU);
CMenu *psub = (CMenu *)m_XpMenu.GetSubMenu(0);
psub->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
m_XpMenu.DestroyMenu();
}