我們知道,程序中的工具條是在CMainFrame中生成的,采用的類是CToolBar,使用起來很復雜。為此,對CToolBar的常用功能進行封裝,生成了它的一個繼承類CToolBarEx,大大簡化了操作。編譯環境:Windows 2000 Server sp3(en) 、VC++6.0 sp5。 先看使用方法:
先看使用方法:
先在CMainFrame中定義變量
CToolBarEx tbex;
在CMainFrame的OnCreate()函數中加入如下代碼:
//先創建ToolBar,取代原來的代碼
tbex.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//設置按鈕個數,分割條也要算一個哦
tbex.SetButtonNumber(5);
//加入圖片
tbex.AddIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
tbex.AddIcon(AfxGetApp()->LoadIcon(IDR_TBTYPE));
tbex.AddIcon(AfxGetApp()->LoadIcon(IDI_SWIRE));
tbex.AddIcon(AfxGetApp()->LoadIcon(IDI_ICON1));
//設置每個按鈕的位置、ID、圖片索引和文字
tbex.SetButton(0,ID_APP_ABOUT,0,"員工");
tbex.SetButton(1,ID_APP_EXIT,1,"進料");
//加入分割條
tbex.AddSeparator (2);
tbex.SetButton(3,ID_APP_ABOUT,2,"Swire");
tbex.SetButton(4,ID_APP_ABOUT,3,"Coca");
//設置每個按鈕大小
tbex.SetSize(); //或者tbex.SetDefaultSize()
這樣,一個漂亮的ToolBar就顯現在我們面前,是不是很簡單啊。
◆類定義
class CToolBarEx : public CToolBar { public: CToolBarEx(); public: //設置圖片大小 void SetImageSize(int nImageWidth,int nImageHeight); //加入圖片 void AddBitmap(CBitmap* pbmImage, COLORREF crMask); void AddBitmap(CBitmap* pbmImage, CBitmap* pbmMask); void AddIcon(HICON hIcon); //設置按鈕大小為默認大小 void SetDefaultSize(); //加入分割條 void AddSeparator(int nButton); //設置按鈕大小,默認是50X40,具體設定必須符合ToolBar的要求,可以自己調 void SetSize(int nWidth=50,int nHeight=40); //設置按鈕圖片和文字 void SetButton(int nButton,int nID, int nImage,LPTSTR lpText); //設置按鈕圖片無文字 void SetButton(int nButton,int nID, int nImage); //設置按鈕個數 void SetButtonNumber(int n); //加入圖片到ToolBarEx,在AddIcon()和AddBitmap()中自動調用 void SetImage(); //圖片變量 CImageList img; //圖片大小變量 CSize sizeImage; virtual ~CToolBarEx(); protected: DECLARE_MESSAGE_MAP() };
◆類具體實現:
CToolBarEx::CToolBarEx() { sizeImage.cx =20;//默認圖片大小為20X20 sizeImage.cy =20; img.Create(sizeImage.cx-1, sizeImage.cy-1, ILC_COLOR8|ILC_MASK, 1,1); } CToolBarEx::~CToolBarEx() {} void CToolBarEx::SetImage() { this->GetToolBarCtrl().SetImageList (&img); } void CToolBarEx::SetButtonNumber(int n) { SetButtons(NULL,n); } void CToolBarEx::SetButton(int nButton, int nID, int nImage,LPTSTR lpText) { SetButtonInfo(nButton, nID, TBSTYLE_BUTTON, nImage); SetButtonText(nButton, lpText); } void CToolBarEx::SetButton(int nButton, int nID, int nImage) { SetButtonInfo(nButton, nID, TBSTYLE_BUTTON, nImage); } void CToolBarEx::SetSize(int nWidth,int nHeight) { CSize cs; cs.cx =nWidth; cs.cy =nHeight; SetSizes(cs, sizeImage); } void CToolBarEx::AddIcon(HICON hIcon) { img.Add (hIcon); SetImage(); } void CToolBarEx::AddSeparator(int nButton) { SetButtonInfo(nButton, 0, TBBS_SEPARATOR, 0); } void CToolBarEx::SetDefaultSize() { CRect rectToolBar; GetItemRect(0, &rectToolBar); //得到按鈕的大小 SetSizes(rectToolBar.Size (), sizeImage); //設置按鈕的大小 } void CToolBarEx::AddBitmap(CBitmap *pbmImage, CBitmap *pbmMask) { img.Add( pbmImage, pbmMask); SetImage(); } void CToolBarEx::AddBitmap(CBitmap *pbmImage, COLORREF crMask) { img.Add( pbmImage, crMask); SetImage(); } void CToolBarEx::SetImageSize(int nImageWidth,int nImageHeight) { sizeImage.cx = nImageWidth; sizeImage.cy =nImageHeight; }
本文示例代碼或素材下載