博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
添加工具栏的图标按钮
阅读量:4198 次
发布时间:2019-05-26

本文共 3289 字,大约阅读时间需要 10 分钟。

有三种方法可以添加工具栏的图标按钮:

第一种:创建CImageList对象,然后往里面加图标,调用SetImageList方法添加图标,具体步骤如下:
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
//向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
UINT array[11];
for(int i=0;i <10;i++)
{
if(i= =3 || i= =7)
array[i] = ID_SEPARATOR; //第4、第8个按钮为分隔条
else
array[i] = i+1001;
}
m_ToolBar.Create(this);//创建工具栏
m_ToolBar.SetButtons(array,11);//设置工具栏按钮布局
//关联图像列表
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);//为工具栏关联图像列表
m_ToolBar.SetSizes(CSize(40,40),CSize(32,32)); //设置按钮和图标的大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//加载工具栏
如果是在文档界面,则是:
最后一句话改成:
EnableControlbar(CBRS_ALIGN_ANY);
m_ToolBar.EnableControlbar(CBRS_ALIGN_ANY);
DockControlBar(&m_Toolbar);
如果是利用imageList添加位图时,需要创建多个图片:
开始的代码如下:
CBitmap bmp
bmp.Load(IDB_MYBITMP1);
imageList.Add(&bmp,RGB(0,0,0));
注意:为了使位图能够显示出来,请确保m_ToolBar.SetSizes中指定的图像尺寸要小于等于在资源编辑器中图片大小,因为MFC不能在工具按钮上缩小位图

第二种方法:为工具栏上所有的按钮创建一个统一的位图,在SetSize中指明每个位图的大小,那么MFC会自动将其切割成一个个小位图加载到按钮上.

具体步骤如下:
UINT array[11];
for(int i=0;i <10;i++)
{
if(i= =3 || i= =7)
array[i] = ID_SEPARATOR; //第4、第8个按钮为分隔条
else
array[i] = i+1001;
}
m_ToolBar.Create(this);
m_ToolBar.SetButtons(array,11);
m_ToolBar.LoadBitmap(IDB_BITMAP1); //加载位图
m_ToolBar.SetSizes(CSize(40,40),CSize(32,32)); //设置按钮和按钮位图大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
为了保证按钮位图的美观,标识符为IDB_BITMAP1的位图,其中宽度应为高度的整数倍.

CToolbar一般放在文档界面上,好处是可以和窗体熔合在一起,但是当对话框上显示CToolbar时,效果就不是很理想,这需要用到控件CToolbarCtrl,当使用此控件时,需要一个个地把按钮和图像加载到工具栏上,具体步骤如下:

CToolBarCtrl m_Toolbar;
CBitmap bit1;
bit1.LoadBitmap(MAKEINTRESOURCE(IDB_BMP1));
CBitmap bit2;
bit2.LoadBitmap(MAKEINTRESOURCE(IDB_BMP2));
CBitmap bit3;
bit3.LoadBitmap(MAKEINTRESOURCE(IDB_BMP3));
m_Toolbar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,600,23),this,156);
m_Toolbar.AddBitmap(1,bit1);
m_Toolbar.AddBitmap(1,bit2);
m_Toolbar.AddBitmap(1,bit3);
m_Toolbar.AddStrings(_T("按钮0/n按钮1/n按钮2/n");
TBBUTTON tb;
tb.iBitmap=2;
tb.idCommand=IDC_BUTTON1;
tb.fsStyle=TBSTATE_ENABLE;
tb.iString=1;
tb.fsState=TBBS_BUTTON;
TBBUTTON tb1;
tb1.iBitmap=1;
tb1.idCommand=IDC_BUTTON2;
tb1.fsStyle=TBSTATE_ENABLE;
tb1.iString=2;
tb1.fsState=TBBS_BUTTON;
TBBUTTON tb2;
tb2.iBitmap=3;
tb2.idCommand=IDC_BUTTON3;
tb2.fsStyle=TBSTATE_ENABLE;
tb2.iString=3;
tb2.fsState=TBBS_BUTTON;
TBBUTOON tbs[3]={tb,tb1,tb2};
m_Toolbar.AddButtons(3,tbs);
m_Toolbar.SetButtonSize(CSize(20,20));
m_Toolbar.SetBitmapSize(CSize(16,16));
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
AddStrings方法用于向工具栏中添加文本串,MFC会用/n将它们分割成多个字符串,并加载到工具栏内部的字符串列表中.
AddBitmap方法用向工具栏中添加图像,其中第一个参数表示此位图内含多少个图像,第二个参数是CBitmap对象
对于一个TBBUTTON结构,它的iString字段就是AddString中分割符"/n"前的部分,它指示了,此字符串在工具栏字符列表中的索引.它的iBitmap字段就是AddBitmap方法添加位图的顺序.工具栏内包含默认从1开始的图像列表.
AddButtons方法一口气将一个工具按钮数组加载到工具栏上.
基本上创建工具栏按钮图标可以分成以下几步:
1.创建一个工具栏对象,
2.编辑好位图资源,并将它们加载到CImageList对象中,
3.为一个工具栏设置按钮的数量和布局,
4.为工具栏加载位图
5.为工具栏的按钮设置按钮大小和图像大小,
6.显示工具栏.

转载地址:http://douli.baihongyu.com/

你可能感兴趣的文章
浏览器
查看>>
了解自己!
查看>>
多网店下修改价格倍数
查看>>
magento核心类Varien_Object
查看>>
magento核心类Varien_Object
查看>>
一段分类代码--产品分类的!
查看>>
产品列表页面函数的整理!
查看>>
XML下的action方法!!
查看>>
MSN QQ在线聊天代码
查看>>
Magento在代码中调用静态块
查看>>
初步总结SEO--个人分析!
查看>>
seo - 如何彻底阻止百度对网站的爬行
查看>>
SEO
查看>>
关于rel="nofollow"
查看>>
magento 模块重写机制
查看>>
来一篇英文转载文章---magento----widgets
查看>>
SEO方案一般步骤
查看>>
网站单页面优化的6个技巧
查看>>
个人对magento整体的理解
查看>>
在magento中如何调用static block
查看>>