CToolBar

CToolBar

CToolBar::GetToolBarCtrl是MFC4.0後新增加的成員函式,它允許你利用Windows通用控制項對工具條的定製及其它性能的支持。CToolBar的成員函式為你提供了Windows通用控制項的大多數性能;但是,當你調用GetToolBarCtrl時,你可以使你的工具條具有更多Windows 95工具條的特徵。

CToolBar,創建工具條,複選框按鈕,成員函式,構造,屬性,函式詳解,

CToolBar

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

創建工具條

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來設定這些文本。

複選框按鈕

要創建一個複選框按鈕,給它賦予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 <afxext.h>
請參閱:
CToolBarCtrl, CControlBar, CToolBar::Create, CToolBar::LoadBitmap, CToolBar::SetButtons, CCmdUI::SetCheck, CCmdUI::SetRadio

成員函式

構造

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

屬性

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

函式詳解

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為工具列按鈕的索引。

相關詞條

熱門詞條

聯絡我們