• 如何在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工程的工具栏里添加下拉列表控件已经完成。
    作者:常想一二
    出处:http://www.cnblogs.com/wolfmvp/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    平衡树-SBT
    平衡树-Splay
    平衡树-Treap
    Placing Medals on a Binary Tree Gym
    The 2016 Asia Regional Contest, Tsukuba Quality of Check Digits Gym
    shift-and 算法初体验
    汇编
    6.828(1)准备工作
    硬件
    git操作
  • 原文地址:https://www.cnblogs.com/wolfmvp/p/7094970.html
Copyright © 2020-2023  润新知