本文介紹如何在工具欄上放置組合框或編輯框等各種控件。
例如,您要?jiǎng)?chuàng)建一個(gè)“Find”組合框,該組合框顯示在工具欄上并包含最近使用的搜索字符串。用戶可以在組合框編輯控件中鍵入搜索字符串,然后按Enter鍵搜索文檔,或按退出鍵將焦點(diǎn)返回到主框架。該文檔顯示在CEditView派生的視圖中。
以下步驟是“setup”工作,它處理組合框按鈕的創(chuàng)建和命令的處理:
- 打開(kāi)應(yīng)用程序資源,將帶有ID_EDIT_FIND命令I(lǐng)D的新按鈕添加到所需(IDR_MAINFRAME)工具欄,并創(chuàng)建具有相同ID的新菜單項(xiàng)。使用ID_EDIT_FIND_COMBO命令I(lǐng)D將新字符串“Find the text \ nFind”添加到字符串表中。此ID將用作查找組合框按鈕的命令I(lǐng)D。
注意。 ID_EDIT_FIND是CEditView處理的標(biāo)準(zhǔn)命令,因此您不需要為此命令實(shí)現(xiàn)特殊處理程序,但您需要為ID_EDIT_FIND_COMBO命令實(shí)現(xiàn)處理程序。
- 從CComboBox類派生一個(gè)類。我們將它命名為CFindComboBox。
- 在CFindComboBox類中,重寫PreTranslateMessage虛擬成員函數(shù)。這將允許您首先處理WM_KEYDOWN消息并采取適當(dāng)?shù)牟僮鳌.?dāng)用戶點(diǎn)擊轉(zhuǎn)義鍵(VK_ESCAPE)時(shí),它必須將焦點(diǎn)返回到主框架窗口。當(dāng)用戶點(diǎn)擊回車鍵(VK_ENTER)時(shí),它必須將帶有ID_EDIT_FIND_COMBO命令I(lǐng)D的WM_COMMAND消息發(fā)布到主框架窗口(該命令將被路由到視圖)。
- 從CBCGPToolbarComboBoxButton類派生一個(gè)類。我們將它命名為CFindComboButton。
- CBCGPToolbarComboBoxButton的構(gòu)造函數(shù)有三個(gè)參數(shù):按鈕的命令I(lǐng)D,按鈕圖像的索引和組合框樣式。您應(yīng)該將ID_EDIT_FIND_COMBO作為命令I(lǐng)D傳遞,并且可以使用帶有ID_EDIT_FIND的CImageHash :: GetImageOfCommand來(lái)獲取圖像索引。
- 覆蓋CBCGPToolbarComboBoxButton :: CreateCombo成員函數(shù)。在這里,您應(yīng)該創(chuàng)建CFindComboBox對(duì)象并返回指向它的指針。
- 使用IMPLEMENT_SERIAL宏使組合按鈕持久化
- 在視圖中實(shí)現(xiàn)ID_EDIT_FIND_COMBO處理程序。使用帶有ID_EDIT_FIND_COMBO ID的CBCGPToolBar :: GetCommandButtons來(lái)檢索所有“Find”組合框按鈕。由于自定義,它可以是具有相同命令I(lǐng)D的組合框按鈕的多個(gè)副本。
- 使用CBCGPToolBar :: IsLastCommandFromButton來(lái)確定是否從我們的組合框按鈕發(fā)送了“Find”命令。如果是這樣,找到文本并將搜索字符串添加到組合框。
您應(yīng)該執(zhí)行以下步驟將查找組合框按鈕放到工具欄上:
- 在主框架窗口中實(shí)現(xiàn)BCGM_RESETTOOLBAR消息處理程序(OnToolbarReset)。
注意。當(dāng)初始化工具欄(在應(yīng)用程序啟動(dòng)時(shí))或在自定義期間重置工具欄時(shí),框架將此消息發(fā)送到主框架窗口。在任何一種情況下,您都需要使用“custom”查找組合框按鈕替換標(biāo)準(zhǔn)工具欄按鈕(請(qǐng)參閱步驟2)。
- 在OnToolbarReset處理程序中分析工具欄的ID(它是BCGM_RESETTOOLBAR消息的WPARAM)。當(dāng)您遇到IDR_MAINFRAME工具欄時(shí),只需使用ID_EDIT_FIND調(diào)用CBCGPToolBar :: ReplaceButton并引用CFindComboButton對(duì)象。
注意。您可以在堆棧上構(gòu)造CFindComboButton對(duì)象,因?yàn)镽eplaceButton復(fù)制按鈕對(duì)象并維護(hù)副本。
- 如果啟用自定義,則實(shí)現(xiàn)“customize”處理程序(OnViewCustomize)并創(chuàng)建CBCGPToolbarCustomize對(duì)話框。您必須使用ID_EDIT_FIND和對(duì)CFindComboButton對(duì)象的引用調(diào)用CBCGPToolbarCustomize :: ReplaceButton。
注意。自定義對(duì)話框包含“Commands”頁(yè)面和“Commands”列表框。用戶可以拖動(dòng)命令并將其拖放到工具欄上。默認(rèn)情況下,自定義對(duì)話框處理應(yīng)用程序菜單并為每個(gè)類別構(gòu)建標(biāo)準(zhǔn)工具欄按鈕的列表。如果在需要時(shí)未通過(guò)CBCGPToolbarButton派生按鈕替換標(biāo)準(zhǔn)工具欄按鈕,則將失去派生對(duì)象提供的擴(kuò)展功能。
購(gòu)買BCGSoft正版授權(quán),請(qǐng)點(diǎn)擊“”喲!
標(biāo)簽:
BCGUI界面C/C++控件
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn