zoukankan      html  css  js  c++  java
  • 添加工具栏图标按钮(转)

    有三种方法可以添加工具栏的图标按钮: 
    第一种:创建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.显示工具栏.

  • 相关阅读:
    Android TextView里显示两种颜色
    Android 命令管理项目
    ANT build.xml文件详解
    Android Camera进行拍照
    Android 4.2以上的手机USB调试设置
    Android MediaPlayer和SurfaceView播放视频
    Android VideoView播放视频
    Android MediaRecorder录制音频
    Android Handler消息传递机制
    Android SurfaceView
  • 原文地址:https://www.cnblogs.com/Daywei/p/1965733.html
Copyright © 2011-2022 走看看