VC MFC在CMFCToolBar工具欄中加入組合框


 

如何在CMFCToolBar工具欄中加入組合框等控件,且先看在線MSDN上怎么說的:

要增加一個組合框,需要完成以下步驟:

1.在工具欄資源中,增加一個對應ID資源號的按鈕.

2.在主框架(mainframe.h)文件中,添加一個 CMFCToolBarComboBoxButton 類的變量 :

    CMFCToolBarComboBoxButton* m_ComboButton;

3.添加消息處理函數,來處理來自於 AFX_WM_RESETTOOLBAR  的消息,在這個消息里使用 CMFCToolBar::ReplaceButton. 的函數來添加一個新的組合框到工具欄中.

具體過程如下:

1.在工具欄資源編輯器中加入id為IDR_COM的空白工具欄按鈕,

2.在頭文件中定義組合框

CMFCToolBarComboBoxButton* m_ComboButton; 

3.BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)中添加消息響應

    ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)

在頭文件中聲明消息函數:

     afx_msg LRESULT OnToolbarReset(WPARAM,LPARAM);

在CMainFram中定義處理函數:

LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM lp)
{     
     m_ComboButton = new CMFCToolBarComboBoxButton(IDR_COM,GetCmdMgr ()->GetCmdImage (IDR_COM, FALSE));

     m_ComboButton->EnableWindow(true);
     m_ComboButton->SetCenterVert();
     m_ComboButton->SetDropDownHeight(25);
     m_ComboButton->SetFlatMode();
     m_ComboButton->AddItem(_T("OPTION1"));
     m_ComboButton->AddItem(_T("OPTION2"));
     m_ComboButton->SelectItem(0);
     m_wndToolBar.ReplaceButton (IDR_COM, *m_ComboButton);
return 0;
}

有了以上說明后,就在工具欄中,添加了新的組合框,但是現在還是灰色的,無法操作,那是因為還沒有增加對應的處理機制.

2、添加組合框的事件消息響應函數

消息映射:

  ON_COMMAND(IDR_COM, &CMainFrame::OnClickComboBox)

     這個處理函數,是為響應鼠標操作,處理函數什么也沒有做,只是一個空函數,但是這個消息函數如果不加,但組合框為灰色的.


ON_CBN_SELCHANGE(IDR_COM,&CMainFrame::OnSelChangeClick
)//別忘了在TOOLBAR中添加IDR_COM資源。

      這個函數是為了響應對應的操作.

消息聲明:

afx_msg void OnSelChangeClick();
afx_msg void OnClickComboBox();

消息處理函數:

void CMainFrame::OnSelChangeClick()
{
CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd (IDR_COM, TRUE);
int index = m_ComboButton->GetCurSel();
index = pSrcCombo->GetCurSel();
CString str = pSrcCombo->GetItem(index);
}

void CMainFrame::OnClickComboBox()
{

}

(注意:一定要GetByCmd;OnClickComboBox沒有做任何處理,但是如果去掉的話,組合框將編程灰色,無法使用)。

注:更新工具欄:

1.工具欄的右側向下的小箭頭->添加或刪除按鈕->標准->重置工具欄

2.運行regedit打開注冊表->HKEY_CURRENT_USER->Software->工程名,找到工程名將其從注冊表中刪之。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM