原創(chuàng)|其它|編輯:郝浩|2013-01-11 11:48:55.000|閱讀 886 次
概述:本文介紹如何將不同的控件比如說如組合或編輯框添加到工具欄上。 比如說你想要創(chuàng)建一個“查找”框,讓它出現(xiàn)在工具欄中,并包含最近使用的搜索字符串,使得用戶可以在復(fù)合的編輯框中定義搜索字符串,然后可以點擊回車鍵去通過文件搜索,或是點擊退出鍵返回到主框架。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本文將介紹在BCGControlBar中如何將不同的控件比如組合框或編輯框添加到工具欄上。
比如你想要創(chuàng)建一個“查找”框,讓它出現(xiàn)在工具欄中,并包含最近使用的搜索字符串,使得用戶可以在復(fù)合的編輯框中定義搜索字符串,然后可以點擊回車鍵去通過文件搜索,或是點擊退出鍵返回到主框架,文件主要是用CEditView-derived視圖進行顯示。
下面是BCGControlBar進行設(shè)置的步驟,主要涉及到創(chuàng)建復(fù)合框按鈕和命令的管理:
1、打開應(yīng)用程序資源,添加一個新有著ID_EDIT_FIND命令I(lǐng)D的按鈕到設(shè)計好的工具欄,同時用一樣的ID名字創(chuàng)建一個新的菜單項目。添加一個新的有著ID_EDIT_FIND_COMBO命令I(lǐng)D的字符串“Find the text\nFind”到字符串表格,這個ID將會被作為查找復(fù)合框按鈕的命令I(lǐng)D。
值得注意的是,這個ID_EDIT_FIND是CEditView處理的標(biāo)準(zhǔn)命令,所以你不需要對于這個命令實現(xiàn)一個特殊的處理程序,但是需要對ID_EDIT_FIND_COMBO命令實現(xiàn)一個處理程序。
2、CComboBox類中派生出一個類,命名為CFindComboBox。
3、在CFindComboBox類中覆蓋PreTranslateMessage的虛擬成員函數(shù),這樣你就可以首先傳遞WM_KEYDOWN message,并采取以適當(dāng)?shù)男袆印.?dāng)用戶點擊退出鍵的時候,它必須返回到主架構(gòu)窗口中。用戶點擊回車鍵的時候,它就必須把有著ID_EDIT_FIND_COMBO命令的ID的WM_COMMAND信息傳遞到主要架構(gòu)窗口中。
4、CBCGPToolbarComboBoxButton類中派生出一個類,命名為CFindComboButton。
5、CBCGPToolbarComboBoxButton構(gòu)造函數(shù)需要三個參數(shù):按鈕的命令I(lǐng)D和按鈕的圖像索引以及復(fù)合框風(fēng)格。你可以通過將ID_EDIT_FIND_COMBO作為命令I(lǐng)D進行傳遞,也可以使用有著ID_EDIT_FIND的CImageHash::GetImageOfCommand來找到圖像索引。
6、覆蓋CBCGPToolbarComboBoxButton::CreateCombo成員函數(shù),并創(chuàng)建CFindComboBox對象來返回使用它。
7、使用IMPLEMENT_SERIAL宏使得按鈕更加的持久,Workspace管理器會自動加載和保存按鈕的狀態(tài)從或是到Windows注冊表。
8、在你的視圖中ID_EDIT_FIND_COMBO的處理器,使用有ID_EDIT_FIND_COMBO ID的CBCGPToolBar::GetCommandButtons來檢索所有的查找命令按鈕,由于是自定義的,它可以是有著一樣ID的幾個復(fù)制的復(fù)合框按鈕。
9、使用CBCGPToolBar::IsLastCommandFromButton命令來決定是否查找命令從復(fù)合框按鈕中發(fā)出,如果是,找到文本并添加搜索字符串到符合框。
下面是BCGControlBar將查找復(fù)合框按鈕添加到工具欄的具體步驟:
1、在主框架窗口中實現(xiàn)BCGM_RESETTOOLBAR信息處理程序。值得注意的是,從框架中發(fā)出的到主要框架窗口中的信息已經(jīng)被初始化了(在應(yīng)用程序啟動時),或是在自定義中被重置看。在這兩種情況下,你需要替換有自定義查找復(fù)合框按鈕的標(biāo)準(zhǔn)工具欄。
2、OnToolbarReset處理程序中分析工具欄的ID(WPARAM of the BCGM_RESETTOOLBAR的信息)。調(diào)用有著ID_EDIT_FIND的CBCGPToolBar::ReplaceButton就可以進入IDR_MAINFRAME工具欄,引用一個CFindComboButton對象。值得注意的是,你可以構(gòu)建一個CFindComboButton對象,因為ReplaceButton復(fù)制了按鈕對象和維護的副本。
3、如果啟動定制,可以實現(xiàn)“自定義”的處理器( OnViewCustomize),并創(chuàng)建CBCGPToolbarCustomize對話框,你必須要調(diào)用CBCGPToolbarCustomize :: ReplaceButton ID_EDIT_FIND和參考CFindComboButton對象。
值得注意的是,自定義對話框中包含有著命令列框的命令頁面。用戶可以在工具欄中拖拽命令,在默認的情況下,自定義對話框處理應(yīng)用程序菜單,對每個類構(gòu)建標(biāo)準(zhǔn)的工具欄按鈕列表。如果在需要的時候,你沒有更換由 CBCGPToolbarButton 派生的標(biāo)準(zhǔn)工具欄按鈕,你將會失去擴展功能派生出的對象。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件