Posted on 2012-10-24 10:47
盛胜 阅读(354)
评论(0) 编辑 收藏 引用
1. 在资源文件中添加Menu
void ClistbDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pPopup=menu.GetSubMenu(0);
//ClientToScreen( )是把窗口坐标转换为屏幕坐标
//ScreenToClient( )是把屏幕坐标转换为窗口坐标
//屏幕坐标是相对于屏幕左上角的,而窗口坐标是相对于窗口用户区左上角的
ClientToScreen(&point);
//该函数在指定位置显示快捷菜单,并跟踪菜单项的选择
//TPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。
//TPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。
//X:在屏幕坐标下,快捷菜单的水平位置。
//Y:在屏幕坐标下,快捷菜单的垂直位置。 pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
CDialog::OnRButtonDown(nFlags, point);
}
CMenu类的成员 数据成员 m_hMenu 指定附加给CMenu对象的窗口菜单的句柄 |
构造函数 初始化 Attach 附加一个Windows菜单句柄给CMenu对象 Detach 从CMenu对象中分离Windows菜单的句柄,并返回该句柄 FromHandle 返回一个指向给定Windows菜单句柄的CMenu对象的指针 GetSafeHmenu 返回由CMenu对象包含的m_hMenu值 DeleteTempMap 删除由FromHandle成员函数创建的所有临时CMenu对象 CreateMenu 创建一个空菜单,并将其附加给CMenu对象 CreatePopupMenu 创建一个空的弹出菜单,并将其附加给CMenu对象 LoadMenu 从可执行文件中装载菜单资源,并将其附加给CMenu对象LoadMenuIndirect从内存的菜单模板中装载菜单,并将其附加给CMenu对象 DestroyMenu 销毁附加给CMenu对象的菜单,并释放菜单占用的内存 |
菜单操作 菜单项操作 可覆盖的函数 DrawItem 通过框架来调用,其发生于拥有者菜单的可视部分有所改变 MeasureItem 通过框架来调用,用于决定当创建了拥有者菜单时的菜单维数 |