UINT uiToolBarId = (UINT)wp;
switch(uiToolBarId)
{
case IDR_MAINFRAME:
{
CBCGPToolbarComboBoxButton comboBoxButton1(IDC_COMBO_TEST_CONTROL, CImageHash::GetImageOfCommand(IDC_COMBO_TEST_CONTROL, FALSE), CBS_DROPDOWNLIST, 150);
comboBoxButton1.AddItem("ComboBox节点1");
comboBoxButton1.SetPrompt("节点");
m_wndToolBar.ReplaceButton(IDC_COMBO_TEST_CONTROL, comboBoxButton1);
}
break;
}
当下拉列表控件的选项发生变动时,想获取变动后的选项内容,通过如下方式实现。第一步,在CMainFrame消息映射链中添加ON_CBN_SELENDON消息。
ON_CBN_SELENDOK(IDC_COMBO_TEST_CONTROL, OnComboTestControl)
同时在CMainFrame的头文件中添加声明,在源文件中添加实现,在实现的内部可以获取变动后的选项内容,代码如下:
void CMainFrame::OnComboTestControl()
{
CBCGPToolbarComboBoxButton* pTestControlComboBox = NULL;
CObList listButtons;
if(CBCGPToolBar::GetCommandButtons(IDC_COMBO_TEST_CONTROL, listButtons) > 0)
{
for(POSITION pos = listButtons.GetHeadPosition(); pTestControlComboBox== NULL && pos != NULL;)
{
CBCGPToolbarComboBoxButton* pComboBox = DYNAMIC_DOWNCAST(CBCGPToolbarComboBoxButton, listButtons.GetNext(pos));
if(pComboBox != NULL && ::GetFocus() == pComboBox->GetHwnd())
{
pTestControlComboBox = pComboBox;
}
}
}
if(pTestControlComboBox != NULL && pTestControlComboBox->GetComboBox() != NULL)
{
CString strName;
pTestControlComboBox->GetComboBox()->GetWindowText(strName);
CString strMsg = ("ComboBox value is :");
strMsg += strName;
MessageBox(strMsg);
}
}
当在应用程序的其它视图当中想获取该ComboBox控件时,通过如下方式实现,代码如下:
CBCGPToolbarComboBoxButton * pTestControl = (CBCGPToolbarComboBoxButton *)(((CMainFrame*)AfxGetMainWnd())->m_wndToolBar.GetButton(1));其中,GetButton函数的参数值代表添加的ComboBox控件所处的位置。至此,在BCGControlBar工程的工具栏里添加下拉列表控件已经完成。
pTestControl->SelectItem(1);