如何在BCGControlBar工程的工具栏里面新增下拉列表控件

通常情况下,工具栏里面都是一些按钮和图片,很少可以看到下拉列表控件,但是在某些应用场合,也需要用到下拉列表控件。今天在这里就简单讲解下如何在工具栏里添加下拉列表控件。
 
添加的过程也比较简单,在CMainFrame的OnToolbarReset消息中添加如下代码:
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));
pTestControl->SelectItem(1);
其中,GetButton函数的参数值代表添加的ComboBox控件所处的位置。
至此,在BCGControlBar工程的工具栏里添加下拉列表控件已经完成。
posted @ 2017-06-29 15:59  不安分的萝卜  阅读(718)  评论(0编辑  收藏  举报