给工具栏按钮添加图标和文字

假设工具栏有两个按钮,为每个按钮添加图标和文字

1.新建一个单文档程序,将准备好的图标资源(32×32)复制到res文件夹.

2.在资源中打开工具栏编辑器,删除(del)原有的位图和多余的按钮(将按钮拖出工具栏即可删除),并为每个按钮修改ID(双击),比如ID_BTN1~ID_BTN2,可在Prompt中输入提示.

3.右键单击资源中的Icon,导入res文件夹中准备好的图标,默认为IDI_ICON1~IDI_ICON2

4.在MainFrm.h中添加三个保护成员变量 CImageList  m_ImageList; SIZE   m_sizeMax;
 BOOL   m_bTextTips;和一个保护成员函数void UpdateToolBar(BOOL bRecalc);

5.在MainFrm.cpp中添加全局指针数组static TCHAR *TextTips[] = {_T("按钮1文字"), _T("按钮2文字"), 

在构造函数中添加 m_bTextTips = TRUE;

完善成员函数void CMainFrame::UpdateToolBar(BOOL bRecalc)
{
 CRect rect;
 SIZE sizeButton,sizeImage;
 if (bRecalc)
 {
  m_sizeMax.cx = 0;
  m_sizeMax.cy = 0;
  //取得最大尺寸
  for (int i=0;i<m_wndToolBar.GetCount();i++)
  {
   m_wndToolBar.SetButtonText( i, TextTips[i] );
   m_wndToolBar.GetItemRect( i, rect );
   m_sizeMax.cx = __max( rect.Size().cx, m_sizeMax.cx );
   m_sizeMax.cy = __max( rect.Size().cy, m_sizeMax.cy );
  }
 }
 //设置按钮尺寸
 sizeButton.cx = m_bTextTips ? m_sizeMax.cx : 55;
 sizeButton.cy = m_bTextTips ? m_sizeMax.cy : 52;
 sizeImage.cx = 32;
 sizeImage.cy = 32;
 m_wndToolBar.SetSizes( sizeButton, sizeImage );
 ShowControlBar( &m_wndToolBar, FALSE, FALSE );
 ShowControlBar( &m_wndToolBar, TRUE, FALSE);
 m_wndToolBar.RedrawWindow( );
}

在OnCreate()函数m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);语句之前添加m_ImageList.Create( 32, 32, TRUE|ILC_COLOR8, 4, 0 );
HICON hIcon = NULL;

hIcon = (HICON)::LoadImage( ::AfxGetInstanceHandle(),
        MAKEINTRESOURCE( IDI_ICON1 ),
        IMAGE_ICON,
        32, 32, 0 );
 m_ImageList.Add( hIcon );
 hIcon = (HICON)::LoadImage( ::AfxGetInstanceHandle(),
        MAKEINTRESOURCE( IDI_ICON2 ),
        IMAGE_ICON,
        32, 32, 0 );
 m_ImageList.Add( hIcon );

m_wndToolBar.GetToolBarCtrl().SetImageList( &m_ImageList );

在return 0;语句之前添加UpdateToolBar( TRUE );

6.编译运行程序可见改动后的工具栏.此时的工具栏是灰色不可用的,在classwizard中为每个按钮ID_BTN1~ID_BTN2添加COMMAND消息之后,工具栏变亮!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值