zoukankan      html  css  js  c++  java
  • VC MFC在CMFCToolBar工具栏中加入组合框

     

    如何在CMFCToolBar工具栏中加入组合框等控件,且先看在线MSDN上怎么说的:

    要增加一个组合框,需要完成以下步骤:

    1.在工具栏资源中,增加一个对应ID资源号的按钮.

    2.在主框架(mainframe.h)文件中,添加一个 CMFCToolBarComboBoxButton 类的变量 :

        CMFCToolBarComboBoxButton* m_ComboButton;

    3.添加消息处理函数,来处理来自于 AFX_WM_RESETTOOLBAR  的消息,在这个消息里使用 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->工程名,找到工程名将其从注册表中删之。

  • 相关阅读:
    第十四周作业
    十二
    第十一周作业
    第十周作业
    第八周作业
    第七周
    软件工程作业2
    自我介绍
    2019春总结作业
    2019春第一次课程设计实验报告
  • 原文地址:https://www.cnblogs.com/lujin49/p/4849500.html
Copyright © 2011-2022 走看看