• <menu id="w2i4a"></menu>
  • logo BCGControlBar 中文文檔
    文檔首頁>>BCGControlBar 中文文檔>>如何在工具欄上放置控件

    如何在工具欄上放置控件


    立即下載BCGControlBar Professional Edition for MFC

    本文解釋了如何在工具欄上放置各種控件,如組合框或編輯框。

    例如,您想要?jiǎng)?chuàng)建一個(gè)“查找”組合框,它出現(xiàn)在工具欄上并包含最近使用的搜索字符串。用戶將能夠在組合框編輯控件中鍵入字符串,然后按 Enter 鍵搜索文檔或按退出鍵將焦點(diǎn)返回到主框架,該文檔顯示在CEditView 派生視圖中。

    以下步驟是“設(shè)置”工作,涉及組合框按鈕的創(chuàng)建及其命令的處理:

    1. 打開應(yīng)用程序資源,將具有ID_EDIT_FIND命令I(lǐng)D的新按鈕添加到所需的工具欄(IDR_MAINFRAME),并創(chuàng)建具有相同ID的新菜單項(xiàng)。添加一個(gè)新的字符串“查找文本\nFind”與ID_EDIT_FIND_COMBO命令I(lǐng)D的字符串表,此ID將用作查找組合框按鈕的命令I(lǐng)D。請(qǐng)注意,ID_EDIT_FIND是CEditView處理的標(biāo)準(zhǔn)命令,因此不需要為該命令實(shí)現(xiàn)特殊的處理程序,但是需要為ID_EDIT_FIND_COMBO命令實(shí)現(xiàn)處理程序。
    2. 從CBCGPComboBox類派生一個(gè)類,命名為CFindComboBox。
    3. 在CFindComboBox類中覆蓋PreTranslateMessage虛擬成員函數(shù),這將允許您首先處理WM_KEYDOWN消息并采取適當(dāng)?shù)牟僮?。?dāng)用戶按下escape鍵(VK_ESCAPE)時(shí),將焦點(diǎn)返回到主框架窗口,當(dāng)用戶點(diǎn)擊回車鍵(VK_ENTER)時(shí),將帶有ID_EDIT_FIND_COMBO命令I(lǐng)D的WM_COMMAND消息發(fā)送到主框架窗口(該命令將被路由到視圖)。
    4. 從CBCGPToolbarComboBoxButton類派生一個(gè)類,命名為CFindComboButton。
    5. CBCGPToolbarComboBoxButton的構(gòu)造函數(shù)接受三個(gè)參數(shù):按鈕的命令I(lǐng)D、按鈕圖像的索引和組合框樣式。您應(yīng)該傳遞ID_EDIT_FIND_COMBO作為命令I(lǐng)D,您可以使用CImageHash::GetImageOfCommand與ID_EDIT_FIND一起獲得圖像索引。
    6. 覆蓋CBCGPToolbarComboBoxButton::CreateCombo成員函數(shù),在這里,您應(yīng)該創(chuàng)建CFindComboBox對(duì)象并返回指向它的指針。
    7. 使用IMPLEMENT_SERIAL宏使組合按鈕持久,工作區(qū)管理器自動(dòng)從Windows注冊(cè)表加載并保存按鈕的狀態(tài)。
    8. 在視圖中實(shí)現(xiàn)ID_EDIT_FIND_COMBO處理程序。使用CBCGPToolBar::GetCommandButtons與ID_EDIT_FIND_COMBO ID檢索所有find組合框按鈕。由于自定義,它可以是具有相同命令I(lǐng)D的組合框按鈕的多個(gè)副本。
    9. 使用CBCGPToolBar::IsLastCommandFromButton來確定“查找”命令是否從組合框按鈕發(fā)送,如果是,則查找文本并將搜索字符串添加到組合框中。

    您應(yīng)該執(zhí)行以下步驟將查找組合框按鈕放到工具欄中:

    1. 在主框架窗口中實(shí)現(xiàn)BCGM_RESETTOOLBAR消息處理器(OnToolbarReset),請(qǐng)注意,當(dāng)工具欄被初始化(在應(yīng)用程序啟動(dòng)時(shí))或工具欄在自定義期間被重置時(shí),框架將此消息發(fā)送到主框架窗口。無論哪種情況,您都需要用“自定義”查找組合框按鈕替換標(biāo)準(zhǔn)工具欄按鈕。
    2. 在OnToolbarReset處理程序中分析工具欄的ID(它是BCGM_RESETTOOLBAR消息的WPARAM)。當(dāng)您遇到IDR_MAINFRAME工具欄時(shí),只需使用ID_EDIT_FIND和對(duì)CFindComboButton對(duì)象的引用調(diào)用CBCGPToolBar::ReplaceButton。請(qǐng)注意。您可以在堆棧上構(gòu)造一個(gè)CFindComboButton對(duì)象,因?yàn)閞eplacebutton復(fù)制按鈕對(duì)象并維護(hù)該副本。
    3. 如果您啟用定制,您實(shí)現(xiàn)“定制”處理程序(OnViewCustomize)并創(chuàng)建CBCGPToolbarCustomize對(duì)話框。你必須用ID_EDIT_FIND和CFindComboButton對(duì)象的引用來調(diào)用CBCGPToolbarCustomize::ReplaceButton。請(qǐng)注意。自定義對(duì)話框包含“Commands”頁面和“Commands”列表框。用戶可以將命令拖放到工具欄上。默認(rèn)情況下,自定義對(duì)話框處理應(yīng)用程序菜單,并為每個(gè)類別構(gòu)建標(biāo)準(zhǔn)工具欄按鈕列表。如果不在需要時(shí)用CBCGPToolbarButton派生的按鈕替換標(biāo)準(zhǔn)工具欄按鈕,則將失去派生對(duì)象提供的擴(kuò)展功能。
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();