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