複製鏈接
請複製以下鏈接發送給好友

CToolBar

鎖定
CToolBar::GetToolBarCtrl是MFC4.0後新增加的成員函數,它允許你利用Windows通用控件對工具條的定製及其它性能的支持。CToolBar的成員函數為你提供了Windows通用控件的大多數性能;但是,當你調用GetToolBarCtrl時,你可以使你的工具條具有更多Windows 95工具條的特徵。
中文名
CToolBar
外文名
CToolBar
對    象
控件條
版    本
MFC4.0
嵌入程序
CFrameWnd或CMDIFrameWnd

CToolBar內容概述

繼承圖表 繼承圖表
類CToolBar的對象是帶有一行位圖按鈕和可選分隔線的控件條。這些按鈕可以像普通按鈕、核選按鈕或單選按鈕那樣動作。CToolBar對象通常是由CFrameWnd或CMDIFrameWnd派生的框架窗口對象的嵌入成員。
CToolBar::GetToolBarCtrl是MFC4.0後新增加的成員函數,它允許你利用Windows通用控件對工具條的定製及其它性能的支持。CToolBar的成員函數為你提供了Windows通用控件的大多數性能;當您調用 GetToolBarCtrl,它將返回對 CToolBarCtrl 對象。 使用Windows公共控件,請參見 CToolBarCtrl 有關設計工具欄的更多信息。 有關公共控件的信息,請參見 Windows SDK的 公共控件。

CToolBar創建工具條

Visual C++提供了兩種創建一個工具條的方法。要使用資源編輯器(ResourceEditor)創建一個工具條,應遵循下面的步驟:
1、創建一個工具條資源。
2、構造CToolBar對象。
3、調用Create或CreateEx函數來創建Windows工具條並將它與該CToolBar對象連接。
4、調用LoadToolBar來裝入工具條資源。
創建工具條資源
另外,也可以依據下面的步驟:
1、構造CToolBar對象。
2、調用Create或CreateEx函數來創建Windows工具條並將它與CToolbar對象連接。
3、調用LoadBitmap來裝入包含工具條按鈕圖像的位圖。
4、調用SetButtons來設置按鈕風格並使每一個按鈕與位圖中的一幅圖像關聯。
此工具條中的所有按鈕圖像都位於同一個位圖,該位圖必須為每一個按鈕包含一個圖像。所有的圖像都必須是同樣大小的。缺省的尺寸是16個像素寬和15個像素高。這些圖像必須一幅接一幅的放在位圖中。
SetButton函數以指向一個控制ID數組的指針和一個指定數組中元素數目的整數作為參數。該函數將每個按鈕的ID值設置為對應的數組元素的值,並賦予每個按鈕一個圖像索引值,每個索引值指定對應按鈕圖像在位圖中的位置。如果某一數組元素的值為ID_SEPARATOR,則不為其賦圖像索引值。
按鈕圖像在位圖中的次序通常就是圖像在屏幕上的繪製次序,但你也可以使用SetButtonInfo函數來修改圖像次序和繪製次序的關係。
在工具欄中的任何按鈕大小相同。 默認值為24 x 22像素,且 Windows軟件設計接口的準則匹配。 在圖像和按鈕維數之間的任何其他的空間用於在圖像周圍窗體邊框。
每個按鈕具有一幅圖像。按鈕的各種狀態和風格(被壓住,彈起,按下,無效,無效按下,以及不定)都可以由這幅圖像產生。雖然位圖可以是任何顏色,但是使用灰色加黑色文字及陰影可實現最好的效果。
CToolBar 支持具有最多的位圖16種顏色。 在加載圖像到工具欄編輯器中,如有必要,Visual Studio會自動將圖像轉換為16色位圖,並顯示警告消息已轉換,則圖像。 如果使用具有16個以上的顏色的圖像(使用編輯的外部編輯圖像),應用程序可能意外行為。
缺省情況下,工具條按鈕模擬普通按鈕。但是,工具條按鈕也可以模擬複選框按鈕和單選按鈕。複選框按鈕具有三種狀態:核選,清除和不定。單選按鈕值具有兩種狀態:核選和清除。
要設置單個按鈕或不指向一個數組的分隔線風格,可以調用GetButtonStyle來獲取這個風格,然後調用SetButtonStyle(而不是調用SetButton)。當你要在運行時改變按鈕的風格時,SetButtonStyle是最有用的。
要分配顯示在一個按鈕上的文本,可以調用GetButtonText來獲取要顯示在該按鈕上的文本,然後調用SetButtonText來設置這些文本。

CToolBar複選框按鈕

要創建一個複選框按鈕,給它賦予TBBS_CHECKBOX風格或在一個ON_UPDATE_ COMMAND_UI處理程序中使用某個CCmdUI對象的SetCheck成員函數。調用SetCheck將一個普通按鈕變成一個複選框按鈕。傳遞給SetCheck函數的參數為0,則按鈕是未核選的,傳遞1則按鈕被核選,傳遞2則按鈕為不定狀態。
要創建一個單選按鈕,在一個ON_UPDATE_COMMAND_UI處理程序中調用某個CCmdUI對象的SetRadio成員函數。給SetRadio傳遞參數0,則按鈕為未核選的,傳遞非零值,則按鈕是被核選的。為了提供一個單選按鈕組的互不相容性,則組中的每個按鈕都必須具有ON_UPDAT_COMMAND_UI處理程序。
有關使用CToolBar的更多信息,參見“Visual C++程序員指南”中的文章“工具條”和“Visual C++聯機文件”中的技術註釋31,控制條。
#include [1] 
請參閲:
CToolBarCtrl, CControlBar, CToolBar::Create, CToolBar::LoadBitmap, CToolBar::SetButtons, CCmdUI::SetCheck, CCmdUI::SetRadio

CToolBar成員函數

CToolBar構造

CToolBar 創建一個CToolBar對象。
Create 創建Window工具條並將它與該CToolBar連接。
CreateEx 為入的CToolBarCtrl對象創建一個具有附加風格的CToolBar對象。
SetSizes 設置按鈕及其位圖的尺寸。
SetHeight 設置工具條的高度。
LoadToolBar 裝入一個用資源編輯器創建的工具條資源。
LoadBitmap 裝入包含位圖—按鈕圖像。
SetBitmap 設置一個位圖中的圖像。
SetButtons 設置按鈕風格和按鈕位圖在位圖中的索引。

CToolBar屬性

CommandToIndex 返回具有給定的命令ID的按鈕的索引。
GetItemID 返回具有給定索引值的按鈕或分割線的命令ID。
GetItemRect 獲取具有給定索引值的項的顯示矩形。
GetButtonStyle 獲取一個按鈕的風格。
SetButtonStyle 設置一個按鈕的風格。
GetButtonInfo 獲取一個按鈕的ID,風格和圖像ID。
SetButtonInfo 設置一個按鈕的ID、風格和圖像號。
GetButtonText 獲取要顯示在一個按鈕的文本。
SetButtonText 設置要顯示在一個按鈕上的文本。
GetToolBarCtrl 允許直接訪問基本的通用控件。

CToolBar函數詳解

MFC為工具欄的操作提供了CToolBar類。下面介紹CToolBar類的主要成員函數。
virtual BOOL CreateEx(
CWnd* pParentWnd,
DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,
CRect rcBorders = CRect(0, 0, 0, 0),
UINT nID = AFX_IDW_TOOLBAR
);
創建工具欄對象。參數pParentWnd為工具欄父窗口的指針。參數dwCtrlStyle為工具欄按鈕的風格,默認為TBSTYLE_FLAT,即“平面的”。參數dwStyle為工具欄的風格,默認取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,由於是主框架窗口的子窗口,所以要有WS_CHILD和WS_VISIBLE風格,CBRS_ALIGN_TOP風格表示工具欄位於父窗口的頂部, 各種風格可以參見MSDN的Toolbar Control and Button Styles中的定義。參數rcBorders為工具欄邊框各個方向的寬度,默認為CRect(0, 0, 0, 0),即沒有邊框。參數nID為工具欄子窗口的ID,默認為AFX_IDW_TOOLBAR。
BOOL LoadBitmap(UINT nIDResource);
為工具欄加載位圖。參數nIDResource為位圖資源的ID。成功則返回TRUE,否則返回FALSE。注意,這裏的位圖資源應當為每個工具欄按鈕都提供位圖,如果圖片不是標準大小(16像素寬,15像素高),則需要調用SetSizes成員函數調整按鈕大小和圖片大小。
BOOL LoadToolBar(UINT nIDResource);
加載由nIDResource指定的工具欄。參數nIDResource為要加載的工具欄的資源ID。成功則返回TRUE,否則返回FALSE。
void SetSizes(SIZE sizeButton,SIZE sizeImage);
設置工具欄按鈕的大小和圖片的大小。參數sizeButton為工具欄按鈕的像素大小。參數sizeImage為圖片的像素大小。
void SetButtonStyle(int nIndex,UINT nStyle);
設置工具欄按鈕或分隔線的風格,或者為按鈕分組。參數nIndex為將要進行設置的按鈕或分隔線的索引。參數nStyle為按鈕風格,可以是以下取值:
TBBS_BUTTON 標準按鈕(默認)
TBBS_SEPARATOR 分隔條
TBBS_CHECKBOX 複選框
TBBS_GROUP 標記一組按鈕的開始
TBBS_CHECKGROUP 標記一組複選框的開始
TBBS_DROPDOWN 創建下拉列表按鈕
TBBS_AUTOSIZE 按鈕的寬度根據按鈕文本計算,而不基於圖片大小
TBBS_NOPREFIX 按鈕的文本沒有快捷鍵前綴
UINT GetButtonStyle(int nIndex) const;
獲取工具欄按鈕或分隔條的風格。風格可參考SetButtonStyle。參數nIndex為按鈕或分隔條的索引。
BOOL SetButtonText(int nIndex,LPCTSTR lpszText);
設置工具欄按鈕的文本。參數nIndex為工具欄按鈕的索引。參數lpszText為指向要設置的文本字符串的指針。設置成功則返回TRUE,否則返回FALSE。
CString GetButtonText(int nIndex) const;
獲取工具欄按鈕上顯示的文本。參數nIndex為工具欄按鈕的索引。 [2-3] 
參考資料