菜鸟求助,怎样往toolbar做的按扭上加图标啊?

zihen520 2007-11-05 08:49:27
菜鸟求助,怎样往toolbar做的按扭上加图标啊?各位大虾来帮忙!
...全文
259 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
凤矶 2007-11-05
  • 打赏
  • 举报
回复
编辑工具栏位图
iyranly 2007-11-05
  • 打赏
  • 举报
回复
toolbar添加图标?在资源视图下点击ToolBar,就会出来编辑视图,你可以在这里面进行编辑图标。楼主是想表达这样的意思吗?
iyranly 2007-11-05
  • 打赏
  • 举报
回复
toolbar添加图标?在资源视图下点击ToolBar,就会出来编辑视图,你可以在这里面进行编辑图标。楼主是想表达这样的意思吗?
naixian 2007-11-05
  • 打赏
  • 举报
回复
在OnInitDialog()内加入m_Addbutton.LoadBitmaps(IDB_ADD1,IDB_ADD2); m_Addbutton是你的按扭名字
zihen520 2007-11-05
  • 打赏
  • 举报
回复
非常感谢各位!
paer_1 2007-11-05
  • 打赏
  • 举报
回复
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.显示工具栏.
paer_1 2007-11-05
  • 打赏
  • 举报
回复
第二种方法:为工具栏上所有的按钮创建一个统一的位图,在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的位图,其中宽度应为高度的整数倍.
paer_1 2007-11-05
  • 打赏
  • 举报
回复
有三种方法可以添加工具栏的图标按钮:
第一种:创建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不能在工具按钮上缩小位图

roker888 2007-11-05
  • 打赏
  • 举报
回复
在OnInitDialog()内加入m_Addbutton.LoadBitmaps(IDB_ADD1,IDB_ADD2); m_Addbutton是你的按扭名字


也可以自己编辑啊

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧