MFC 2008,新的用户界面 - 3 - 菜单栏、工具栏和状态栏
2013-02-27 21:23
736 查看
MFC加入了新窗口元素:窗格。崭新的工具栏和状态栏都是一种窗格。
一、窗格
窗格是MFC在2008年新加入的,它由类CPane和其基类CBasePane实现。窗格就是用来在主框架窗口上占据边框位置的窗口,例如工具栏和状态栏。
CBasePane实现了窗格的基本功能和属性:停靠、浮动以及基本的窗口消息处理。CPane在CBasePane的基础上,实现了抓取的功能,可以用鼠标把窗格从停靠状态变为浮动状态。只要你的窗口从CPane派生,就能具有这样的功能。CBasePane和CPane提供了非常多的虚函数,派生类需要考虑自己如何去重写或实现。
二、工具栏
MFC的新工具栏是一个窗格。工具栏由CMFCToolBar实现。CMFCToolBar的基类是CMFCBaseToolBar,而CMFCBaseToolBar的又是从CPane派生的。CMFCToolBar和CToolBar没有任何关系,它不是用Win32的窗口类TOOLBARCLASSNAME创建的,也不是TOOLBARCLASSNAME的超类,所以不能向CMFCToolBar发送和公共控件特有的Windows消息。CMFCToolBar的所有功能,包括按钮的显示已经按钮事件的产生都是CMFCToolBar自己实现的。
CMFCToolBarButton实现工具按钮,它类似于Win32的TBBUTTON和TBBUTTONINFO,有类似的数据成员。CMFCToolBar在使用习惯上和CToolBar是类似的,它有一些和CToolBar类似的函数:
LoadBitmap、LoadToolBar、LoadBitmapEx、LoadToolBarEx从资源中读取工具栏;
SetButtons、InsertButton、InsertSeparator、ReplaceButton、RemoveButton、RemoveAllButtons修改工具栏上的按钮;
三、菜单栏
菜单栏是用工具栏实现的,菜单按钮也就是工具按钮嘛。MFC实现菜单栏的类是CMFCMenuBar。
函数CreateFromMenu从HEMNU中创建菜单栏;
函数GetMenuItem获取菜单项。
四、状态栏
MFC的新状态栏也是一个窗格,它是由CMFCStatusBar实现的。CMFCStatusBar从CPane派生。CMFCStatusBar和CStatusBar没有任何关系,它不是用Win32的窗口类STATUSCLASSNAME创建,也不是STATUSCLASSNAME的超类,所以不能向CMFCStatusBar发送和公共控件特有的Windows消息。CMFCStatusBar的所有功能自己实现的。
类CMFCStatusBarPaneInfo保存状态栏窗格的信息,但主要在CMFCStatusBar内部使用。CMFCStatusBar提供了类似于CStatusBar的函数:
SetIndicators:从资源中读取状态栏;
CommandToIndex:从窗格的命令ID查询序号;
GetItemID、GetItemRect、GetPaneText、GetPaneInfo等等都和CStatusBar的含义是一样的。
五、REBAR
MFC用CMFCReBar替代了原来的CReBar,它也是一个窗格,从CPane派生。CRebar是用Win32的窗口类REBARCLASSNAME创建,因而可以在CMFCReBar中使用Win32中有关REBAR的宏和消息。
GetReBarCtrl:在REBAR创建后,可以获取CReBarCtrl控件对象,并操纵REBAR控件;
AddBar:增加一个band;
SetPaneAlignment:设置bands在REBAR中的对齐方式。
一、窗格
窗格是MFC在2008年新加入的,它由类CPane和其基类CBasePane实现。窗格就是用来在主框架窗口上占据边框位置的窗口,例如工具栏和状态栏。
CBasePane实现了窗格的基本功能和属性:停靠、浮动以及基本的窗口消息处理。CPane在CBasePane的基础上,实现了抓取的功能,可以用鼠标把窗格从停靠状态变为浮动状态。只要你的窗口从CPane派生,就能具有这样的功能。CBasePane和CPane提供了非常多的虚函数,派生类需要考虑自己如何去重写或实现。
二、工具栏
MFC的新工具栏是一个窗格。工具栏由CMFCToolBar实现。CMFCToolBar的基类是CMFCBaseToolBar,而CMFCBaseToolBar的又是从CPane派生的。CMFCToolBar和CToolBar没有任何关系,它不是用Win32的窗口类TOOLBARCLASSNAME创建的,也不是TOOLBARCLASSNAME的超类,所以不能向CMFCToolBar发送和公共控件特有的Windows消息。CMFCToolBar的所有功能,包括按钮的显示已经按钮事件的产生都是CMFCToolBar自己实现的。
CMFCToolBarButton实现工具按钮,它类似于Win32的TBBUTTON和TBBUTTONINFO,有类似的数据成员。CMFCToolBar在使用习惯上和CToolBar是类似的,它有一些和CToolBar类似的函数:
LoadBitmap、LoadToolBar、LoadBitmapEx、LoadToolBarEx从资源中读取工具栏;
SetButtons、InsertButton、InsertSeparator、ReplaceButton、RemoveButton、RemoveAllButtons修改工具栏上的按钮;
三、菜单栏
菜单栏是用工具栏实现的,菜单按钮也就是工具按钮嘛。MFC实现菜单栏的类是CMFCMenuBar。
函数CreateFromMenu从HEMNU中创建菜单栏;
函数GetMenuItem获取菜单项。
四、状态栏
MFC的新状态栏也是一个窗格,它是由CMFCStatusBar实现的。CMFCStatusBar从CPane派生。CMFCStatusBar和CStatusBar没有任何关系,它不是用Win32的窗口类STATUSCLASSNAME创建,也不是STATUSCLASSNAME的超类,所以不能向CMFCStatusBar发送和公共控件特有的Windows消息。CMFCStatusBar的所有功能自己实现的。
类CMFCStatusBarPaneInfo保存状态栏窗格的信息,但主要在CMFCStatusBar内部使用。CMFCStatusBar提供了类似于CStatusBar的函数:
SetIndicators:从资源中读取状态栏;
CommandToIndex:从窗格的命令ID查询序号;
GetItemID、GetItemRect、GetPaneText、GetPaneInfo等等都和CStatusBar的含义是一样的。
五、REBAR
MFC用CMFCReBar替代了原来的CReBar,它也是一个窗格,从CPane派生。CRebar是用Win32的窗口类REBARCLASSNAME创建,因而可以在CMFCReBar中使用Win32中有关REBAR的宏和消息。
GetReBarCtrl:在REBAR创建后,可以获取CReBarCtrl控件对象,并操纵REBAR控件;
AddBar:增加一个band;
SetPaneAlignment:设置bands在REBAR中的对齐方式。
相关文章推荐
- MFC 2008,新的用户界面(3)- 菜单栏、工具栏和状态栏
- 在mfc中,设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- MFC框体添加菜单栏工具栏状态栏
- MFC基于对话框的菜单栏,工具栏和状态栏的创建
- MFC的对话框工具栏、状态栏、和菜单栏的编辑
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- MFC取消MDI、SDI的状态栏、工具栏、菜单栏
- MFC VS2008中的新用户界面 ————菜单栏、工具栏和状态栏
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- MFC框体添加菜单栏工具栏状态栏
- MFC框体添加菜单栏工具栏状态栏
- lgob创建菜单栏_工具栏和状态栏
- Qt学习之八:菜单栏、工具栏和状态栏
- C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗体
- 传统界面设计(不同于ribbon):BarManager管理菜单栏、工具栏和状态栏的管理器
- mfc 多文档 office2007 菜单栏绑定工具栏
- 如何去除MFC窗口的自动记忆功能 (如去除工具栏,菜单栏上次运行程序自动保存的内容)
- QT5 学习之路16---菜单栏、工具栏和状态栏
- 工具栏,状态栏(VC_MFC)
- MFC学习笔记之七————工具栏编程与状态栏编程