没有合适的资源?快使用搜索试试~ 我知道了~
MFC菜单-工具条-状态条详细讲解及示例
需积分: 13 21 下载量 187 浏览量
2012-04-03
18:01:59
上传
评论 1
收藏 614KB PDF 举报
温馨提示
试读
19页
MFC菜单-工具条-状态条详细讲解及示例 注意:本文档只用于学习交流,如果将其用于商业活动,文档作者保留追求违规人员的法律责任的权利,切忌!
资源推荐
资源详情
资源评论
吴炜整理
------------------------------------------------------------------------------------------------------------------------------------------
创建菜单
启动 Visual C++.NET2005 集成开发环境,新建一个工程名为 GameMenu 的单文档应用程
序在集成开发环境中打开资源视图窗口,然后在项目中展开资源文件,双击 Menu 子项中的
IDR_MAINFRAME,打开菜单编辑器,就可以开始菜单设计了,如图 2-2 所示。
图 2-2 菜单编辑器窗口
在菜单的最后一项,集成开发环境自动留出了一个空位置,用来输入新的菜单项。在这
个位置双击,则出现空白位置成为可输入文本框,也可以直接修改已经存在的菜单项。如图
2-3 所示。
图 2-3 通过菜单编辑器进行菜单编辑
打开属性窗口,然后在属性窗口中对菜单对应的属性项进行修改,菜单属性框中对应的
属性项的意义如下所示:
ID 莱单的资源 ID 号
吴炜整理
------------------------------------------------------------------------------------------------------------------------------------------
Caption 莱单标题
Separator 菜单项是一个分隔线
Pop-up 莱单项有一个弹出式子菜单
Inactive 菜单项没有被激活
Break 选中菜单项后退出所在菜单
Checked 菜单项被选中时显示一个标记
Gravd 菜单项显示灰色
He1p 菜单项放在菜单的最右端
Prompt 鼠标指针移至莱单项时在状态栏上显示的文本。
ID 值的定义是随意的,但通常都按照容易记忆的规则来确定,这样便于设计代码时使
用,可在 Caption 属性文本框中的文本尾加入用&符号引导的字母,表示这个字母是热键,
也就是 ALT 组合键,在 Prompt 属性中输入莱单项的状态栏提示信息。
然后将新建菜单项和菜单资源 IDR_MAINFRAME 关联起来。右击刚刚添加的菜单项,然后
从快捷菜单中选择 Add Event Handler 命令,打开 Event Handler Wizard 对话框,从 Class
list 列表中选择 CMainFrame,然后在 Messages type 框中选择 COMMAND,如图 2-3 所示。
图 2-3 为菜单项添加函数
Function Handler name 项中将显示的菜单操作对应的函数的名称,可以自己修改名称
这里用默认名称 OnFileNew。如图 2-3 所示。
单击 OK 按钮,集成开发环境将自动将对应的函数添加到程序中去,在 OnMenu()函数中
添加代码如下:
// CMainFrame 消息处理程序
void CMainFrame::OnFileNew()
{
// TODO: 在此添加命令处理程序代码
MessageBox("设置摄影机")
吴炜整理
------------------------------------------------------------------------------------------------------------------------------------------
}
编译并运行程序,可以看到菜单中新增加的菜单项,单击此菜单项,出现实例的对话框,
如图 2-4 所示。
图 2-4 单击菜单项打开的对话框
最后,为新建的菜单项设置加速键。
加速键又称为快捷键,用于快速激活特定的命令。加速键的属性也是在资源文件中,显
示或编辑的方法和菜单相似。在资源视图窗口中打开 Accelerator 资源文件夹,双击 IDR_
MAINFRAME,出现加速键资源列表,如图 2-5 所示。
图 2-5 加速键资源列表
要建立一个新的加速键,双击加速键列表的最下端的空行,出现 Acce1 propenies 对
话框,如图 9-8 所示。
Accel Propernes 对话框中的属性:
ID 指定菜单项的口号,选择刚刚添加的菜单对应的 ID。
吴炜整理
------------------------------------------------------------------------------------------------------------------------------------------
Modifiers 确定加速键是否包含 Ctrl、Alt、Shift。
单击 Next key Typed 按钮后,用户操作的按键将成为加速馒的键值,键入 Ctrl+M。
2.6.2 动态加载莱单
Visual C++的 MFC 提供了菜单类 CMenu。CMenu 类对象可以用来表示各种 Windows 菜单。
CMenu 类的函数允许用户在程序执行时动态控制菜单的内容。
当窗口的 Create 函数或 1oadFrame 函数被调用时,菜单的资源都被直接连到窗口中。 因
此,用 CWnd 的 DetMenu()成员函数获得一个临时的 CMenu 对象的指针,就可以对菜单对
象进行访问和更新。GetMenu()成员函数的原型如下:
Cmenu*CWnd::GetMenu()const
得到窗口主菜单的指针后,就可以使用 GcisubMenu()函数来获得包含在主菜单内的
弹出式子菜单的指针。GetSubMenu()函数的原型如下:
Cmenu*Cmenu::GetSubMenu(int nPos)const
如果指定位置有一个弹出式菜单,则返回一个包含此菜单的 CMenu 指针。得到菜单的指
针后,就可以给菜单添加或删除菜单项。
给莱单添加菜单项
给莱单添加菜单项给莱单添加菜单项
给莱单添加菜单项
使用 InsertMenu()函数可以在运行时给菜单添加菜单项。该函数的原型如下:
BOOL Cmenu::InsertMenu(UINT nPosition,UINT nFlag,UINT nIDNewItem=0
LPCSTR lpszNewItem=NULL);
BOOL Cmenu::InsertMenu(UINT nPosition,UINT nFlagag,UINT uIDNewItem,
ConstCBitmap*pBmp);
该函数用于向一个菜单中 nPosition 指定的位置处插入一个菜单项, nFlag 为指定方
式,nFlag=MF_BYCOMMAND,则 nPosition 给定菜单项的命令 ID;而 nFlag=MF_BYPOSITION
时,nPosition 要给定菜单项的位置。第一个菜单项的位置为 0,如果要加到莱单末尾,
nPosition 为-1。pBmp 是一个指向位图对象的指针,用于设置带位图的菜单项。lpszNewItem
是一个指向包含菜单内容的字符串的指针。
删除菜单项
删除菜单项删除菜单项
删除菜单项
使用 DeleteMenu()函数可以删除指定的菜单项。该函数的原型为:
BOOLCmenu::Ddle4teMenu(UINTnPosition,UINT nFlag);
nPosition 指定要被删除的菜单项。 nFlag 为 nPosition 的指定方式,与 InseltMenu
()的用法相同。
删除一个指定的菜单项,如果该菜单项有一个关联的弹出式菜单, De1eteMenu()会
删除弹出菜单的句柄,井释放弹出菜单使用的内存空间。
窗口中菜单发生变化时,应用程序将调用 CWnd::DrawMenuBar()完成菜单的更新。
剩余18页未读,继续阅读
资源评论
langyayulingyu
- 粉丝: 10
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功