VCMFC中使用工具栏控件详解

上传人:桔**** 文档编号:501633194 上传时间:2023-05-01 格式:DOC 页数:9 大小:448.50KB
返回 下载 相关 举报
VCMFC中使用工具栏控件详解_第1页
第1页 / 共9页
VCMFC中使用工具栏控件详解_第2页
第2页 / 共9页
VCMFC中使用工具栏控件详解_第3页
第3页 / 共9页
VCMFC中使用工具栏控件详解_第4页
第4页 / 共9页
VCMFC中使用工具栏控件详解_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《VCMFC中使用工具栏控件详解》由会员分享,可在线阅读,更多相关《VCMFC中使用工具栏控件详解(9页珍藏版)》请在金锄头文库上搜索。

1、.VC MFC 工具栏 (CToolBar)控件工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar, 所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton 按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。CButton 类的 Create 成员函数可以创建一个按钮控件,这个函数的格式如下:BOOL CButton:Create(LPCTSTR lpszCaption,/按钮显示的文本DWORD dwStyle,/按钮样式const RECT& rect,/按钮控件显示的区域(大

2、小)相对于父窗口CWnd* pParentWnd,/按钮的父窗口(按钮属于哪个窗口)UINT nID/指明按钮控件ID 号);这个函数的第二个参数dwStyle 是按钮控件的样式,也就是在可视化添加按钮控件时,右击按钮控件, 选择属性,之后会弹出一个对话框,这个对话框有一个样式的选项,该参数即对应这个样式。好了,了解了上面这些我们就来动态创建一个按钮吧,首先在对应话类里添加一个按钮类成员变量CButtonm_Button;然后在对话框编辑区里给对话框添加一个按钮控件(单击这个按钮创建按钮控件), 然后添加这个按钮控件单击消息处理函数,并在函数添加以下语句:RECT ButtonRect;/按钮

3、控件显示的区域(大小)相对于父窗口ButtonRect.left=10;ButtonRect.top=10;ButtonRect.right=80;ButtonRect.bottom=30;m_Button.Create(动态创建 ,WS_CHILD,ButtonRect,this,1115);m_Button.ShowWindow(SW_SHOW);/显示按钮控件知道了怎样动态创建按钮控件,我们就来创建工具栏控件。首先在对话类中添加一个CToolBar 类成员变量CToolBar m_Toolbar;然后在对话类文件中定义工具栏命令ID#define ID_BUTTON1501#define

4、 ID_BUTTON2502#define ID_BUTTON3503接着我们就要创建工具栏资源了,用于工具栏按钮的显示图片方法是进入ResourceView( 资源视图选项卡),再随便选中一个选项,右击选择插入,在弹出的对话框里选中Toolbar ,点新建。接着创建三个按钮。如下图所示:1 / 9.好了,下面把三个按钮ID 号,改成上面宏定义的ID 号,如果要改变“天 ”字按钮,选中该按钮,然后回车键,就会弹出一个对话框,在 ID 项填入 ID_BUTTON1 ,就可以了。接着依次把两个ID 号改为 ID_BUTTON2 , ID_BUTOON3 。在这个对话框里也可以改变工具栏按钮的大小。

5、接下来我们样在对话框类的OnInitDialog函数里的所有代码之后,return TRUE; 之间添加以下语句:m_Toolbar.Create(this);/创建工具栏控件m_Toolbar.LoadToolBar(IDR_TOOLBAR1);/装载工具栏资源CRect rect(100,100,200,200);/m_Toolbar.MoveWindow(rect);/移动工具栏在父窗口的位置m_Toolbar.ShowWindow(SW_SHOW);/显示工具栏但这样显示工具栏不是很方便,特别是当窗口大小改变后,还要计算工具栏在窗口中的位置,有没有什么方法,可以根据窗口大小自动调整工具

6、栏到合适的位置呢?答案是肯定的,RepositionBars函数可以做到。实现方法如下,把上面的语句换成下面的:m_Toolbar.Create(this);/创建工具栏控件m_Toolbar.LoadToolBar(IDR_TOOLBAR1);/装载工具栏资源/ 该函数用于显示工具栏,并根据窗口大小自动调整工具栏的位置RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);而响应工具栏按钮单击消息,跟前面介绍的添加按钮单击消息差不多,进入类向导,找到要添加的工具栏按钮ID ,添加 COMMAND 消息响应函数,如下

7、图:2 / 9.工具栏按钮上显示真彩位图上面的例子有一个缺陷,那就是工具栏按钮显示的图形,不能超过256 色,如果我想在工具栏按钮显示真彩位图,上面的方法显示是无法实现的,那这个功能是如何实现呢?SetImageList 函数可以做到,既然要显示真彩位图,那就不能使用上面的工具栏资源(256 色),所以一切都得到用代码实现首先向工程引入六张位图(用于工具栏按钮显示的图片),假设ID 号分别为 IDB_BITMAP1 , IDB_BITMAP2 ,IDB_BITMAP3,IDB_BITMAP4,IDB_BITMAP5,IDB_BITMAP6,大小为 50X38第一步:在对话框里添加两个成员变量分

8、别是:CToolBar m_Toolbar;CImageList m_ImageList;第二步:在对话类文件添加以下宏定义:#define ID_BUTTON1501#define ID_BUTTON2502#define ID_BUTTON3503#define ID_BUTTON4504#define ID_BUTTON5505#define ID_BUTTON6506接下来在对话框初始化函数OnInitDialog 后面添加如下语句:m_ImageList.Create(50,38,ILC_COLOR24|ILC_MASK,1,1);/ 图片大小必须一致 CBitmap bmp;for

9、(int i=0;i6;i+)bmp.LoadBitmap(IDB_BITMAP1+i);m_ImageList.Add(&bmp,RGB(255,255,255);bmp.DeleteObject();UINT nArray6;for(i=0;i6;i+)nArrayi=ID_BUTTON1+i;m_Toolbar.CreateEx(this);/创建工具栏控件,CreateEx 函数创建的工具栏,默认有浮动按钮属性m_Toolbar.SetButtons(nArray,6);/创建六个工具按钮,并依次设置ID 号,对应nArray 数组的元素m_Toolbar.SetSizes(CSize

10、(60,56),CSize(50,38);/函数第一个是按钮大小,第二个是图像大小,按钮必须比图像要大,具体是按钮的要/ 比图像的宽大 7 或者以上,高 6m_Toolbar.GetToolBarCtrl().SetImageList(&m_ImageList);/设置图像RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);3 / 9.运行效果如下图:如果要响应工具栏按钮单击消息的话,必须手动添加消息映射:如ON_COMMAND(ID_BUTTON1,Button1)/button1为消息处理函数如果要设置按钮显

11、示文本的话,就是CToolBar 类的 SetButtonText函数。设置工具栏背景位图用 CReBar 类可以实现在工具栏背景里显示位图,可以把工具栏设置成CReBar 类对应的子窗口,以上面的工程为例子,再在对话类里添加一个成员变量:CReBar m_Rebar;接着导入一张位图,用做工具栏的背景,ID 号为ID_TOOLBACK ,然后在OnInitDialog函数的RepositionBar(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);语句前面添加如下语句:m_Rebar.Create(this);/创建窗口(控件)m_Re

12、bar.AddBar(&m_Toolbar);/添加 m_Toolbar为子窗口m_Rebar.RedrawWindow();/重画窗口REBARBANDINFO info;info.cbSize=sizeof(info);info.fMask=RBBIM_BACKGROUND;m_Toolbar.ModifyStyle(0,TBSTYLE_TRANSPARENT);/设置工具栏背景色透明info.hbmBack=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_TOOLBACK);/加载位图m_Rebar.GetReBarCtrl()

13、.SetBandInfo(0,&info);编译,运行效果如下:为工具栏按钮添加鼠标停留提示信息以上面的工程为例子,在对话类里添加一个成员变量CString str;接着在 m_Toolbar调用 CreateEx 函数后,调用这个语句:m_Toolbar.EnableToolTips();/激活信息提示功能然后在对话类里添加一个成员函数(用于TTN_NEEDTEXT 消息处理函数),格式如下:BOOLOnDisplay(UINT id, NMHDR *pNMHDR, LRESULT *pResult)然后添加TTN_NEEDTEXT 消息映射宏ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnDisplay)4 / 9.OnDisplay 函数代

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号