利用MFC编程在工具条中增加组合框控件

我们知道,Visual C++所提供的标准工具条中基本上只有一些简单的诸如文档打开、存储以及一些编辑功能按钮,而Visual C++自身的工具条功能十分丰富,尤其是工具条中内嵌的组合框控件十分方便。实际上利用MFC编程在工具条中增加一些有趣的控件还是比较容易的,下面我们就谈谈如何利用MFC编程在工具条中增加组合框控件。


1. 创建AppWizard工程文件设为toolbar,采用系统缺省设置。 

2. 打开资源编辑器,选择工具条,在工具条中增加一个按钮,设置按钮 I D 为 I D_MY_COMBO_BOX 。 移动该按钮以使按钮处于适当的位置。 

3. 从 C ToolBar 派 生出一个新类 C MyToolBar , 在 C MyToolBar 类 中增加一个成员变量 m_wndMyComboBox , 代码如下: 

class CMyToolBar : public CToolBar
{
public:
   CComboBox m_wndMyComboBox;
};  

注意要将代码放在工程文件mainframe.h中“#endif // _MSC_VER > 1000”语句之后,类CMainFrame定义之前。 

4. 将工程文件mainframe.h中的CToolBar变量m_wndToolBar用CMyToolBar变量m_wndToolBar代替。同时增加函数CreateMyComboToolBar()声明。代码如下: 

protected:

                // control bar embedded members

           CStatusBar m_wndStatusBar;
       CMyToolBar m_wndToolBar;
       int CreateMyComboToolBar();

5. 在工程文件mainframe.cpp中的OnCreate()函数返回语句之前调用函数CreateMyComboToolBar();代码如下所示: 

  if(!CreateMyComboToolBar())

    MessageBox("Create My Combo ToolBar Failure");

6. 以文本方式打开资源头文件resource.h,增加一个控制ID如下,注意该控制的ID值不要与其它控制或资源的ID值重复: 

      #define  IDC_MY_COMBO 1111

7. 在工程文件mainframe.cpp中增加函数CreateMyComboToolBar();代码如下: 

int MainFrame::CreateMyComboToolBar()
{
#define COMBO_BOX_WIDTH 80 //the width of the combo box
 //set up the ComboBox control as a select box
//First get the index of the button's position in the toolbar
int index = 0;
CRecr rect;
while(m_wndToolBar.GetItemID(index) != ID_MY_COMBO_BOX) index++;
//next convert that button to a seperator and get its position
m_wndToolBar.SetButtonInfo(index, ID_MY_COMBO_BOX, TBBS_SEPARATOR, COMBO_BOX_WIDTH);
m_wndToolBar.GetItemRect(index, &rect);
//expand the rectangle to allow the combo box room to drop down
rect.top+=2;
    rect.bottom += 200;
    // then .Create the combo box and show it
    if (!m_wndToolBar.m_ wndMyComboBox.Create(
        WS_CHILD|WS_VISIBLE | CBS_AUTOHSCROLL | 
        CBS_DROPDOWNLIST | CBS_HASSTRINGS ,
        rect, &m_wndToolBar, IDC_MY_COMBO))
    {
        TRACE0("Failed to create combo-box\n");
        return FALSE;
    }
    m_wndToolBar.m_wndMyComboBox.ShowWindow(SW_SHOW);
    //adding string to the combo box

    m_wndToolBar.m_wndMyComboBox.AddString("Fisrt Select");
    m_wndToolBar.m_wndMyComboBox.AddString("Second Select");
    m_wndToolBar.m_wndMyComboBox.AddString("Third Select");
    m_wndToolBar.m_wndMyComboBox.AddString("Fourth Select");
    m_wndToolBar.m_wndMyComboBox.AddString("Fifth Select");
    m_wndToolBar.m_wndMyComboBox.SetCurSel(0);
}


编译并运行该应用,就会发现工具条中多了一个组合框控件。 从上面的例程可以看出,在工具条中增加新的控件,关键在于重写主框架的OnCreate()函数。掌握了这一点,就可以在工具条中增加各种各样的控件了,如增加无限输入(Radio)控件、检查框(Check)控件等。有兴趣的读者可以自己去尝试一下加深理解。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值