1. 程式人生 > >VC中CMFCToolBar插入組合框

VC中CMFCToolBar插入組合框

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

To add a combo box button to a toolbar, follow these steps:

1. Reserve a dummy resource ID for the button in the parent toolbar resource.

2. Construct a CMFCToolBarComboBoxButton object.

3. In the message handler that processes the AFX_WM_RESETTOOLBAR

 message, replace the dummy button with the new combo box button by using 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->工程名,找到工程名將其從登錄檔中刪之。