菜单

▲菜单的ID

每个菜单项都有唯一的ID,分隔栏和弹出菜单没有ID

Pop-up菜单(弹出菜单)项不能自定义消息响应

 

▲菜单的索引

菜单上从左至右,弹出菜单的索引依次是0,1,2...

子菜单中从上至下,菜单项(包括分隔栏)的索引依次是0,1,2...

 

▲获取菜单

GetMenu() 

 

▲添加/删除菜单

CMenu menu                  //创建菜单对象 

menu.LoadMenu(...)       //初始化菜单对象

SetMenu(...)                  //添加或删除菜单

在添加菜单时,若menu是局部变量,应执行menu.Detach()

 

▲获取子菜单

menu=GetMenu()                      //获得菜单

GetMenu.GetSubMenu(...)         //按索引号从菜单中获取子菜单

 

▲标记菜单项

GetMenu()->GetSubMenu(...)->CheckMenuItem(...)   //在指定菜单项前显示或隐藏标记(默认为√)

///

CBitmap bitmap                              //创建位图对象

bitmap.LoadBitmap(...)                   //初始化位图对象

GetMenu()->GetSubMenu(...)->SetMenuItemBitmaps(...&bitmap...)  //将指定菜单项的标记符号和非标记符号设置为指定的位图

系统规定的位图尺寸由GetSystemMetrics(SM_CXMENUCHECK)和GetSystemMetrics(SM_CYMENUCHECK)获得,图标透明色为白色

/// 

 

▲缺省菜单项

GetMenu()->GetSubMenu(...)->SetDefaultItem(...)    //将指定菜单项以粗体显示

每个子菜单中只能有一个缺省菜单项

 

▲启用/禁用菜单项/子菜单

GetMenu()->EnableMenuItem(...)         //启用或禁用指定的子菜单

GetMenu()->GetSubMenu(...)->EnableMenuItem(...)    //启用或禁用指定的菜单项

对菜单项操作时,需要在CMainFrame类的构造函数中写入m_bAutoMenuEnable=false

 

▲通过CCmdUI设置菜单项

在类向导中,添加相应菜单项的UPDATE_COMMAND_UI消息响应函数,在响应函数中通过操作传入的CCmdUI对象指针,也可以设置对应菜单项的启用/禁用、标记/非标记、文字等。

 

 

▲添加/插入弹出菜单/菜单项

CMenu menu
menu.CreateMenu()                             //创建空菜单
GetMenu()->AppendMenu(MF_POPUP,menu.m_hMenu,"...")   //添加指定文字的弹出菜单到菜单末尾

//

GetMenu()->GetSubMenu(...)->AppendMenu(MF_STRING,101,"...")   //在指定的子菜单末尾添加指定文字的菜单项

/

GetMenu()->InsertMenu(...,MF_BYPOSITION|MF_POPUP,(UINT)menu.m_hMenu,"...")      //在指定的弹出菜单前插入指定文字的弹出菜单

GetMenu()->GetSubMenu(...)->InsertMenu(...,MF_BYPOSITION|MF_STRING,101,"...")     //在指定子菜单的指定菜单项前插入指定文字的菜单项

 

▲删除弹出菜单/菜单项

GetMenu()->DeleteMenu(...)                                 //删除指定的弹出菜单

GetMenu()->GetSubMenu(...)->DeleteMenu(...)    //删除指定的菜单项

 

▲刷新菜单

当窗口创建完成后,对菜单添加或删除子菜单时,需要刷新菜单

DrawMenuBar() 

 

▲鼠标弹出式菜单

通过组建添加:工程->添加工程->Components and Controls->Visual C++ Components->Pop-up Menu,在弹出的对话框中选择目标类,设置菜单资源ID。

该组建在资源中添加了一个菜单资源,在目标类中添加成员函数OnContextMenu(...)

//

通过代码添加:

1.自建一个菜单资源

2.在目标类中添加WM_RBUTTONDOWN消息响应函数

3.在响应函数中

CMenu menu

menu.LoadMenu(...)                        //初始化菜单对象

CMenu* popmenu

popmenu=menu.GetSubMenu(...)   //获得指定的子菜单

popmenu->TrackPopupMenu(...)     //以指定的方式在指定的位置弹出指定的子菜单

TrackPopupMenu()使用的坐标是相对与整个屏幕,用ClientToScreen(...)将相对于客户区的坐标转换成相对于整个屏幕的坐标

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值