假設工具欄有兩個按鈕,爲每個按鈕添加圖標和文字
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消息之後,工具欄變亮!