轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2021-05-11 10:09:42.450|閱讀 884 次
概述:上一節(jié)中講了菜單及CMenu類(lèi)的使用,這一節(jié)講與菜單有密切聯(lián)系的工具欄。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
上一節(jié)中講了菜單及CMenu類(lèi)的使用,這一節(jié)講與菜單有密切聯(lián)系的工具欄。在內(nèi)容開(kāi)始前為大家介紹一款MFC界面開(kāi)發(fā)控件:
Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫(kù),是MFC開(kāi)發(fā)中最全面界面控件套包,它提供了Windows開(kāi)發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
點(diǎn)擊下載Xtreme Toolkit Pro最新試用版
工具欄簡(jiǎn)介
工具欄一般位于主框架窗口的上部,菜單欄的下方,由一些帶圖片的按鈕組成。當(dāng)用戶用鼠標(biāo)單擊工具欄上某個(gè)按鈕時(shí),程序會(huì)執(zhí)行相應(yīng)的操作,如果鼠標(biāo)沒(méi)有點(diǎn)擊,只是停留在某個(gè)按鈕上一會(huì)后,會(huì)彈出一個(gè)小窗口顯示提示信息。
一般工具欄中的按鈕在菜單欄中都有對(duì)應(yīng)的菜單項(xiàng)中,即點(diǎn)擊工具欄按鈕與點(diǎn)擊菜單項(xiàng)的效果相同。但工具欄中的按鈕都顯式的排列出來(lái),操作很方便,而且按鈕上的圖片描述功能更直觀,所以工具欄作為用戶操作接口來(lái)說(shuō)比菜單更加便捷。
VS2010工具欄資源詳解
雞啄米仍然以VS2010/MFC編程入門(mén)之三十四(菜單:VS2010菜單資源詳解)中創(chuàng)建的單文檔工程Example34為基礎(chǔ),講解工具欄資源。
在Example34工程中,打開(kāi)Resource View資源視圖,展開(kāi)Example->Example34.rc->Toolbar,我們可以看到有一個(gè)ID為IDR_MAINFRAME的工具欄資源,雙擊打開(kāi),工具欄資源顯示如下:
以IDR_MAINFRAME工具欄的第一個(gè)按鈕為例說(shuō)明工具欄按鈕的各項(xiàng)屬性。用鼠標(biāo)單擊工具欄資源上的第一個(gè)按鈕,屬性頁(yè)中就會(huì)顯示其屬性。下面分別講解各項(xiàng)屬性。
ID屬性:ID_FILE_NEW。不知大家是否還記得,菜單IDR_MAINFRAME的菜單項(xiàng)File->New的ID也是ID_FILE_NEW,兩者ID相同,正是如此才使得工具欄第一個(gè)按鈕與菜單項(xiàng)File->New能實(shí)現(xiàn)相同的功能。所以大家一定要記住,如果想讓工具欄某個(gè)按鈕與菜單欄某個(gè)菜單項(xiàng)點(diǎn)擊后執(zhí)行的操作相同,就要為兩者設(shè)置相同的ID。
Prompt屬性:Create a new document\nNew。此屬性為工具欄按鈕的提示文本。在鼠標(biāo)指向此按鈕時(shí),狀態(tài)欄中會(huì)顯示“Create a new document”,當(dāng)彈出提示信息窗口時(shí)會(huì)顯示包含“New”的提示信息。“\n”是兩者的分隔轉(zhuǎn)義符。
Height屬性:15。此屬性為工具欄按鈕的像素高度。
Width屬性:16。此屬性為工具欄按鈕的像素寬度。
工具欄資源的最右邊總是會(huì)有一個(gè)待編輯的按鈕,我們對(duì)其進(jìn)行編輯后,工具欄資源會(huì)自動(dòng)增加一個(gè)新的空白按鈕,這也實(shí)現(xiàn)了按鈕的添加操作。如果我們想要?jiǎng)h除某個(gè)按鈕,就可以用鼠標(biāo)左鍵點(diǎn)住它,拖出工具欄資源的范圍即可。
另外,我們看到,第三個(gè)按鈕(保存按鈕)和第四個(gè)按鈕(剪切按鈕)之間有一些間隙,在運(yùn)行程序后會(huì)出現(xiàn)一個(gè)豎的分隔線,所以想要在兩個(gè)按鈕之間添加分隔線的話,可以用鼠標(biāo)左鍵拖住右邊的按鈕往右稍移動(dòng)一些就可以了。
CToolBar類(lèi)的主要成員函數(shù)
MFC為工具欄的操作提供了CToolBar類(lèi)。下面介紹CToolBar類(lèi)的主要成員函數(shù)。
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
);
創(chuàng)建工具欄對(duì)象。參數(shù)pParentWnd為工具欄父窗口的指針。參數(shù)dwCtrlStyle為工具欄按鈕的風(fēng)格,默認(rèn)為T(mén)BSTYLE_FLAT,即“平面的”。參數(shù)dwStyle為工具欄的風(fēng)格,默認(rèn)取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,由于是主框架窗口的子窗口,所以要有WS_CHILD和WS_VISIBLE風(fēng)格,CBRS_ALIGN_TOP風(fēng)格表示工具欄位于父窗口的頂部, 各種風(fēng)格可以參見(jiàn)MSDN的Toolbar Control and Button Styles中的定義。參數(shù)rcBorders為工具欄邊框各個(gè)方向的寬度,默認(rèn)為CRect(0, 0, 0, 0),即沒(méi)有邊框。參數(shù)nID為工具欄子窗口的ID,默認(rèn)為AFX_IDW_TOOLBAR。
BOOL LoadBitmap(UINT nIDResource);
為工具欄加載位圖。參數(shù)nIDResource為位圖資源的ID。成功則返回TRUE,否則返回FALSE。注意,這里的位圖資源應(yīng)當(dāng)為每個(gè)工具欄按鈕都提供位圖,如果圖片不是標(biāo)準(zhǔn)大小(16像素寬,15像素高),則需要調(diào)用SetSizes成員函數(shù)調(diào)整按鈕大小和圖片大小。
BOOL LoadToolBar(UINT nIDResource);
加載由nIDResource指定的工具欄。參數(shù)nIDResource為要加載的工具欄的資源ID。成功則返回TRUE,否則返回FALSE。
void SetSizes(SIZE sizeButton,SIZE sizeImage);
設(shè)置工具欄按鈕的大小和圖片的大小。參數(shù)sizeButton為工具欄按鈕的像素大小。參數(shù)sizeImage為圖片的像素大小。
void SetButtonStyle(int nIndex,UINT nStyle);
設(shè)置工具欄按鈕或分隔線的風(fēng)格,或者為按鈕分組。參數(shù)nIndex為將要進(jìn)行設(shè)置的按鈕或分隔線的索引。參數(shù)nStyle為按鈕風(fēng)格,可以是以下取值:
TBBS_BUTTON 標(biāo)準(zhǔn)按鈕(默認(rèn))
TBBS_SEPARATOR 分隔條
TBBS_CHECKBOX 復(fù)選框
TBBS_GROUP 標(biāo)記一組按鈕的開(kāi)始
TBBS_CHECKGROUP 標(biāo)記一組復(fù)選框的開(kāi)始
TBBS_DROPDOWN 創(chuàng)建下拉列表按鈕
TBBS_AUTOSIZE 按鈕的寬度根據(jù)按鈕文本計(jì)算,而不基于圖片大小
TBBS_NOPREFIX 按鈕的文本沒(méi)有快捷鍵前綴
UINT GetButtonStyle(int nIndex) const;
獲取工具欄按鈕或分隔條的風(fēng)格。風(fēng)格可參考SetButtonStyle。參數(shù)nIndex為按鈕或分隔條的索引。
BOOL SetButtonText(int nIndex,LPCTSTR lpszText);
設(shè)置工具欄按鈕的文本。參數(shù)nIndex為工具欄按鈕的索引。參數(shù)lpszText為指向要設(shè)置的文本字符串的指針。設(shè)置成功則返回TRUE,否則返回FALSE。
CString GetButtonText(int nIndex) const;
獲取工具欄按鈕上顯示的文本。參數(shù)nIndex為工具欄按鈕的索引。
本節(jié)內(nèi)容就講到這里了,下節(jié)繼續(xù)講解VS2010工具欄的有關(guān)知識(shí)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: