給工具欄按鈕添加圖標和文字

假設工具欄有兩個按鈕,爲每個按鈕添加圖標和文字

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消息之後,工具欄變亮!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章