又开始看孙鑫视频了:菜单之静态菜单

本文详细介绍了在Visual Studio 2010中进行菜单设计的步骤和一些实用技巧,包括如何创建静态菜单、动态菜单、处理菜单响应顺序、消息分类、命令更新、右键弹出菜单等。

谢谢无私的孙鑫老师

1Mainframe和view类都是派生自cwnd类,所以能直接用messagebox函数。而doc和app类


不是,所以只能用afxmessagebox或是全局api函数。
2.vs2010删除函数得上类向导里,然后出错的时候还得删剩余的,傻逼工具啊,添加自定义消


息的时候就问题很多,不好用
3.对菜单点击的响应顺序:view,doc,mainframe,app.
4.消息的分类a,标准消息,除wm_command之外,所有以wm_开头的消息。从CWnd派生


的类,都可以接收到这类消息。b命令消息,来自菜单,加速键或工具栏按钮的消息,都以


wm_command呈现。通过菜单项的id来区分。从CCmdTarget派生的类,都可以接收到这类


消息。c通告消息,由控件产生的消息,例如按钮的单击,列表框的选择等。为的是向其父窗


口(通常是对话框)通知事件的发生,也是以wm_command呈现,从CCmdTarget派生的类


,都可以接收到这类消息。     而CCmdTarget类是cmd的父类。也就说cwnd派生的类能接


收命令消息和通告消息。
5.创建标记菜单(前面打对号那种)checked
子菜单没有id,只能用索引来访问,而子菜单里的菜单项则有id
分隔栏在菜单里是要计算索引 位置的
6.图形菜单,函数SetMenuItemBitmap
7.让菜单项变灰enablemenuitem,构造函数里得加个变量m_bAutoMenuEnale=false.
8.取消菜单 setmenu(NULL).哈哈都没了
9.命令更新
想让哪个菜单项不能使用,可以这样。用类向导给某个菜单项加update_command_ui然后
pCmdUI->Enable(); pCmdUI->SetCheck();//这个是加对号
10.右键弹出菜单(vs2010里直接自带了)
孙鑫教那个添加组件那个不好使。我找到一个方法。插入菜单编辑后把菜单关联到视图类之后


,用类向导加入消息wm_contextmenu。然后代码:
CMenu menu;
menu.LoadMenu(IDR_POP_MENU1);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|


TPM_RIGHTBUTTON,poing.x,poin.y,this);
就好了
另外发现个技巧:
类视图里视图类不小心没了(好像是被remove了),
a.切换到FileView,如果有的话,双击打开.h文件。然后切换回ClassView,在.h的类开始处


放2个斜杠再删除这2个斜杠,ClassView就有了
b.打开工程文件夹,删除Debug文件夹,并找到clw文件并记住它的名字。然后删除,然后再


打开这个工程,打开ClassWizard,会提示你是否根据当前情况重建clw,点击是,然后创建


一个刚才一样的文件名的clw,确定,也应该可以。
对了,孙鑫也会这个。他直接加rbuttondown消息。可惜坐标有点不太对。还得把客户区坐


标转换为屏幕坐标ClientToScreen(&point);
这时候孙鑫又在这小菜单上加函数,一个在view类,一个在框架类里,先显示的当然是view


类里了。可是把那个函数删除之后,还是不显示框架类里的函数。原来是产生这个小菜单的


TrackPopupMenu里的参数为this,即试图类。那我们把这参数改成GetParent()就行了
静态菜单就讲到这了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值