精华内容
下载资源
问答
  • mfc组合框操作实例

    2012-08-03 22:26:11
    这是一个MFC组合框操作的程序包,有兴趣的可以参考下。
  • mfc组合框控件的完美运用实例源码,代码很简洁,而且你一定可以让你学会如何在实战中运用组合框控件
  • VC++\MFC 组合框使用方法,组合框使用方法大家应该都知道吧,但是有几个需要注意的问题我觉得还是要说明的
  • MFC组合框使用方法

    2013-05-05 14:03:21
    MFC中的组合框的使用方法,主要是添加控件后如何进行消息响应的处理
  • MFC组合框 编辑框

    2018-12-31 13:33:21
    GetDlgItem( IDC_)->EnableWindow(false);...(1)由于组合框内包含了列表框,所以列表框的功能都能够使用。如可以利用: int AddString( LPCTSTR lpszItem )添加行; int DeleteString( UIN

    GetDlgItem(IDOK)->SetWindowText(TEXT(“继续”)); ///可以设置么么的标题
    SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3), FALSE) //设置图标

    GetDlgItem( IDC_)->EnableWindow(false);//设置初始状态,
    编辑框获取信息的方式:变量:m_edit
    m_edit.Format(" ");

    编辑框自动换行
    1.属性里面:多行选中 :multiline=true
    2.将自动水平滚动去掉 :auto hscroll=false

    操作组合框的数据:
    (1)由于组合框内包含了列表框,所以列表框的功能都能够使用。如可以利用:
    int AddString( LPCTSTR lpszItem )添加行;
    int DeleteString( UINT nIndex )删除指定行;
    int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置;
    void ResetContent()可以删除列表框中所有行。
    通过调用 int GetCount()得到当前列表框中行的数量。
    (2) 如果需要得到/设置当前被选中的行的位置,可以调用 int GetCurSel()/int SetCurSel(int iIndex)。通过调用 int GetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。
    (3)通过调用 int FindString( int nStartAfter, LPCTSTR lpszItem )可以在当前所有行中查找指定的字符串的位置,nStartAfter 指明从哪一行开始进行查找。调用 int SelectString(int nStartAfter, LPCTSTR lpszItem )可以选中包含指定字符串的行
    通过添加变量函数:m_combo
    m_combo.AddString("");//可以添加成员到combo组建中。。
    也可以在里面直接添加

    //获得当前选择的列表项索引
    int nIndex = m_cbExamble.GetCurSel();
    CString strCBText;
    //根据指定的索引获得该项的数据
    m_cbExamble.GetLBText( nIndex, strCBText);
    MessageBox(strCBText);

    微调按钮:CSpinButtonCtrl
    通过 CSpinButtonCtrl 的成员函数,可以对微调按钮进行查询和设置。
    用 GetRange()和 SetRange()来查询和设置微调按钮值的范围,缺省时值的范围是 1~100。
    这两个函数的声明为:
    void GetRange( int &lower, int& upper ) const;
    void SetRange( int nLower, int nUpper );
    第一个参数是最小值,该值不能小于 UD_MINVAL,第二个参数是最大值,该值不能大于 UD_MAXVAL。值的范围不能超过 UD_MAXVAL。

    用 GetPos()和 SetPos()来查询和设置微调按钮的当前值。函数的声明为:
    int GetPos() const;
    int SetPos(int nPos);

    用 GetBase()和 SetBase()来查询和设置微调按钮值的计数制。函数的声明为:
    UINT GetBase()const;
    int SetBase(int nBase);
    如果参数 nBase 是 10,则伙伴控件中显示的数值是十进制的,如果 nBase 是 16,则是十六进制的
    需要设置伙伴控件:在属性里面更改:
    自动结伴(A):
    结伴整数设置为:
    在根据编辑框的左右设置。。

    滚动条类 CScrollBar
    操 作 函 数
    GetScrollPos 获取一个滚动框的当前位置
    SetScrollPos 设置一个滚动框的当前位置
    GetScrollRange 获取给定滚动条的当前最大和最小滚动SetScrollRange 设置给定滚动条的最小和最大位置
    ShowScrollBar 显示或隐藏一个滚动条
    EnableScrollBar 使一个滚动条的一个或两个箭头有效或无效
    SetScrollInfo 设置有关滚动条的信息
    GetScrollInfo 获取有关滚动条的信息
    GetScrollLimit 获取滚动条的极限

    滑动块类 CSliderCtrl

    展开全文
  • VS2015 MFC组合框控件

    千次阅读 2017-08-09 10:09:57
    MFC中的组合框控件用CComboBox类来表示。该控件可以看作是列表控件和编辑框控件的组合。一般情况下,在列表框中选择了某项之后,该项的内容会在文本框中显示出来。

    MFC中的组合框控件用CComboBox类来表示。该控件可以看作是列表控件和编辑框控件的组合。一般情况下,在列表框中选择了某项之后,该项的内容会在文本框中显示出来。

    1 概述

    组合框控件共分为3类,分别是SimpleDraw-downDraw-down list。这三种类型主要有两方面的区别:一是控件中列表框显示的时机,二是控件中文本框的属性(静态文本框还是动态文本框),如表1所示。

    1 三种类型的组合框的区别

    类型

    列表框显示的时机

    文本框的属性

    Simple

    一直显示

    动态文本框(可直接输入)

    Draw-down

    单击控件右侧向下箭头才显示

    动态文本框(可直接输入)

    Draw-down list

    单击控件右侧向下箭头才显示

    静态文本框(不能输入)

    三种类型的组合框控件如图1所示。从左到右依次为simpledropdowndropdown list类型。从图1可以看出,simple类型的组合框在开始的时候就会显示列表;而dropdowndropdown list类型的组合框必须点击控件右侧的向下箭头时才会显示列表。dropdown类型的组合框中的编辑框是可以修改和输入的;而dropdown list类型的组合框中的编辑框不能修改和输入,只能通过在列表中选择。

     

    1 三种类型的组合框

    2 类型选择

    VS2015MFC程序中创建控件的方法主要有两种:一种是在“资源编辑器”中通过“工具箱”将控件拖入到界面中,该方法适用于“基于对话框的MFC程序”;另一种是通过控件对应的MFC类的成员函数进行创建,该方法适用于“基于文档/视图的MFC程序”。

    2.1 在“资源编辑器”中选择组合框控件的类型

    VS2015的“资源编辑器”中选中组合框控件,之后在右侧的“属性”中选择“Type”栏,之后在右侧的下拉菜单中选择组合框的类型,如图2所示。

     

    2 选择组合框控件类型

    2.2 通过CComboBox类的成员函数修改其类型

    MFC中的组合框控件用CComboBox类来表示。通过该类的成员函数CComboBox::Create()函数设置其类型。该函数的格式是

    virtual BOOL Create(

        DWORD dwStyle,  

        const RECT& rect,  

        CWnd* pParentWnd,  

        UINT nID);

    其中,参数dwStyle表示组合框的属性,可以通过该参数指定组合框类型;rect表示组合框的位置;pParentWnd表示组合框的父窗口指针;nID表示组合框的ID

    首先在对话框类中添加CComboBox类的对象

    CComboBox m_combobox_manual;

    之后在对话框类的OnInitialDialog()函数中通过该变量调用CComboBox::Create()函数

    m_combobox_manual.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL| CBS_DROPDOWNLIST, CRect(0, 0, 100, 100), this, 10001);

    其中,WS_CHILD表示该组合框控件是对话框的子控件,WS_VISIBLE表示该控件可见,WS_VSCROLL表示该控件具有垂直的滑动条,CBS_DROPDOWNLIST表示该组合框控件的类型是dropdown list,另外两个类型对应的值是CBS_SIMPLECBS_DROPDOWN。如果这三个值都没有指定,则默认类型为simple

    3 大小调整

    “2.2 通过CComboBox类的成员函数修改其类型”中已经提到,可以通过CComboBox::Create()函数的第三个参数修改控件的大小。

    对于在VS2015的“资源编辑器”中直接添加的组合框控件,可以手动调整其大小。选中要调整大小的对话框,鼠标拖动蓝色方框即可对编辑框的宽度进行调整,如图3所示。

     

    3 调整组合框宽度

    如果需要调整组合框的高度,即控件列表的高度时,则需要在“资源编辑器”中点击控件右侧的向下箭头,之后向下拖动蓝色方框即可,如图4所示。

     

    4 调整组合框高度

    展开全文
  • MFC组合框ComboBox

    2014-01-06 16:29:51
    原文地址:组合框ComboBox">MFC 组合框ComboBox作者:IdeakingMFC ComboBox   一、入门篇   Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。...
    原文地址:MFC 组合框ComboBox作者:Ideaking

    MFC ComboBox

     

    一、入门篇

     

    Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子简要说明如何利用MFC CComboBox Class操作字符串列表。

    1、定义控件对应变量

    假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;

    在后面的代码中会不断使用这个变量。

    2、向控件添加 Items

    1)Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。

    2) 利用函数 AddString()Combo Box 控件添加 Items,如:

    m_cbExample.AddString(“StringData1”);

    m_cbExample.AddString(“StringData2”);

    m_cbExample.AddString(“StringData3”);

    3) 也可以调用函数 InsertString()Item 插入指定位置 nIndex,如:

    m_cbExample.InsertString( nIndex,“StringData” );

    3、从控件得到选定的Item

    假设在控件列表中已经选定某项,现在要得到被选定项的内容,首先要得到该项的位置,然后得到对应位置的内容。这里会用到两个函数,如:

    int nIndex =m_cbExample.GetCurSel();

    CString strCBText;

    m_cbExample.GetLBText( nIndex,strCBText);

    这样,得到的内容就保存在strCBText 中。

    若要选取当前内容,可调用函数GetWindowText(strCBText)

    4、在控件中查找给定Item

    这种操作一般用于在程序中动态修改控件中该项的值,可以用函数FindStringExact() 精确匹配,如:

    int nIndex = m_cbExample.FindStringExact(nStartAfter, “value to be found”);

    nStartAfter指明从哪一行开始查找。如果查找成功,返回的是该项的位置;否则,返回CB_ERR

    也可以选中包含指定字符串的项,如:

    int nIndex = m_cbExample.SelectString(nStartAfter, “value to be selected”);

    5、删除控件中的Item

    该操作可以利用函数DeleteString(),需要指定被删除项的位置,如:

    m_cbExample.DeleteString(nIndex);

    也可以使用函数ResetContent(),清除目前的所有项,如:

    m_cbExample.ResetContent();

    6、显示控件中的某项

    int nIndex =m_cbExample.GetCurSel(); //当前选中的项

    m_cbExample.SetCurSel(nIndex);//设置第nIndex项为显示的内容

    7、得到或设置输入框中被选中的字符位置

    DWORD GetEditSel( ) /BOOL SetEditSel( intnStartChar, int nEndChar );

    BOOL LimitText( int nMaxChars); 设置输入框中可输入的最大字符数。

    8、列表框常用消息映射宏

    ON_CBN_DBLCLK 鼠标双击

    ON_CBN_DROPDOWN列表框被弹出

    ON_CBN_KILLFOCUS /ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生

    ON_CBN_SELCHANGE列表框中选择的行发生改变

    ON_CBN_EDITUPDATE输入框中内容被更新

    补充:

    一、如何添加/删除ComboBox内容

    1,在ComboBox控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。

    2,在程序初始化时动态添加

    如: //控件内容初始化

    CString strTemp;

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容

    for(int i=1;i<=100;i++)

    {

    strTemp.Format("%d",i);

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

    }

    3,下拉的时候添加

    如: CString strTemp;

    intiCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已经有的行数

    if(iCount<1)//防止重复多次添加

    {

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();

    for(int i=1;i<=100;i++)

    {

    strTemp.Format("%d",i);

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);

    }

    }

    4,删除

    DeleteString( UINT nIndex )//删除指定行,

    5,插入

    InsertString( int nIndex, LPCTSTR lpszItem)//将行插入到指定位置

    6,查找

    FindString( int nStartAfter, LPCTSTR lpszItem)//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。

    int SelectString( int nStartAfter, LPCTSTR lpszItem)//可以选中包含指定字符串的行

    二、如何控制Combo Box的下拉长度

    1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。

    2,二、属性里有个 Nointegral height钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

    三、选择其中的某行

    1,选中:

    intiPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选中的行。

    2,设置

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//设置第n行内容为显示的内容。

    四、取得Combo Box框内容

    1取当前内容

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

    2取其他行内容

    ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);

    四、获得焦点

    通常要判断控件是否获得了焦点,可以用GetFocus()函数

    例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。

    但是combobox 的焦点不同,因为它是由editlistbox两部分组成的

    所以获得焦点要用GetParent()if((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))

    控制Combo Box的下拉长度

    1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。

    二、属性里有个 No integral height 钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

    VC++Combo Box/Combo Box Ex控件

      组合窗口是由一个输入框和一个列表框组成。创建一个组合窗口可以使用成员函数:

    BOOLCListBox::Create( LPCTSTR lpszText, DWORD dwStyle, constRECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);

    其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。

    CBS_DROPDOWN 下拉式组合框

    CBS_DROPDOWNLIST 下拉式组合框,但是输入框内不能进行输入

    CBS_SIMPLE 输入框和列表框同时被显示

    LBS_SORT 所有的行按照字母顺序进行排序

    由于组合框内包含了列表框,所以列表框的功能都能够使用,如可以利用:

    intAddString( LPCTSTR lpszItem )添加行,

    intDeleteString( UINT nIndex )删除指定行,

    intInsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。

    voidResetContent( )可以删除列表框中所有行。

    通过调用int GetCount( )得到当前列表框中行的数量。

    如果需要得到/设置当前被选中的行的位置,可以调用int GetCurSel( )/int SetCurSel(intiIndex)。通过调用int GetLBText( int nIndex, LPTSTRlpszText )得到列表框内指定行的字符串。

    此外通过调用int FindString( int nStartAfter, LPCTSTRlpszItem )可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。

    intSelectString( int nStartAfter, LPCTSTR lpszItem)可以选中包含指定字符串的行。

    此外输入框的功能都能够使用,如可以利用:

    DWORD GetEditSel( ) /BOOL SetEditSel( int nStartChar, intnEndChar )得到或设置输入框中被选中的字符位置。

    BOOLLimitText( int nMaxChars )设置输入框中可输入的最大字符数。

    输入框的剪贴板功能Copy,Clear,Cut,Paste动可以使用。

    最后介绍一下列表框几种常用的消息映射宏:

    ON_CBN_DBLCLK 鼠标双击

    ON_CBN_DROPDOWN 列表框被弹出

    ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生

    ON_CBN_SELCHANGE 列表框中选择的行发生改变

    ON_CBN_EDITUPDATE 输入框中内容被更新

    使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,并且定义形式如ON_Notification( id, memberFxn)的消息映射。如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。

    MFC 4.2中对组合框进行了增强,你可以在组合框中使用ImageList,有一个新的类CComboBoxEx(由CComboBox派生)来实现这一功能。在CComboBoxEx类中添加了一些新的成员函数来实现新的功能:首先你需要调用CImageList* SetImageList( CImageList*pImageList );来设置ImageList,然后调用

    intInsertItem( const COMBOBOXEXITEM* pCBItem );来添加行,其中COMBOBOXEXITEM定义如下:

    typedef struct { UINT mask; int iItem; LPTSTR pszText; intcchTextMax; int iImage; int iSelectedImage; int iOverlay;      int iIndent; LPARAM lParam;}COMBOBOXEXITEM, *PCOMBOBOXEXITEM;

    你需要设置mask=CBEIF_IMAGE CBEIF_TEXT,并设置iItem为插入位置,设置pszText为显示字符串,设置iImage为显示的图标索引。下面的代码演示了如何进行插入:

     

    m_list.Create(IDB_IMG,16,4,RGB(0,0,0));

    m_cbeWnd.SetImageList(&m_list);

    COMBOBOXEXITEMinsItem;insItem.mask=CBEIF_IMAGE CBEIF_TEXT;insItem.iItem=0;insItem.iImage=0;insItem.pszText="Line1";m_cbeWnd.InsertItem(&insItem);insItem.iItem=1;insItem.iImage=1;insItem.pszText="Line2";m_cbeWnd.InsertItem(&insItem);

    通过调用int DeleteItem( int iIndex);来删除行,并指明行的位置。

    通过调用BOOL GetItem(COMBOBOXEXITEM* pCBItem )/BOOL SetItem( const COMBOBOXEXITEM*pCBItem );来得到/设置行数据。

     

     

     

     

    二、提高篇(控件应用方案)

    1.功能

    组合框(ComboBox)是文本框(TextBox)和列表框(ListBox)的组合。用户可以从文本框中输入文本,也可以从列表框中选取列表项。

    2.属性

    ComboBox控件的常用属性如表1所示。

    1ComboBox控件的常用属性

    编号

    属性

    说明

    1

    IntegralHeight

    返回或设置一个值,指示控件是否显示部分项目。运行时是只读的

    2

    List

    返回或设置控件列表部分的项目

    3

    ListCount

    返回控件的列表部分项目的个数

    4

    ListIndex

    返回或设置控件中当前选择项目的索引,在设计时不可用

    5

    Locked

    返回或设置一个值,以指定控件是否可被编辑

    6

    Sorted

    返回一个值,指定控件的元素是否自动按字母表顺序排序

    7

    Style

    返回或设置一个值,该值用来指示控件的显示类型和行为

    8

    TabIndex

    返回或设置父窗体中大部分对象的〈Tab〉键次序

    9

    Text

    ComboBox控件(Style属性设置为0(下拉组合框)或为1(简单组合框))返回或设置编辑域中的文本

     

    下面对比较重要的属性进行详细介绍。

    1List属性

    返回或设置控件列表部分的项目。

    语法:

    object.List(index) [=string]

    object:对象表达式。

    index:列表中具体某一项目的号码。

    string:字符串表达式,指定列表中的项目。

    示例:

    下例演示的是,当程序运行时,当单击ComboBox控件列表中对象后,在标签控件中将显示所选择的对象名称,如图1所示。

     

    1 List属性演示示例

    程序代码如下:

    '单击ComboBox控件列表中对象后,在标签控件中将显示所选择的对象名称

    Private SubCombo1_Click()

    Label1.Caption ="选取的项目为:" &Combo1.List(Combo1.ListIndex)

    End Sub

    '窗体启动时组合框1中自动加十一个从Combo1(0)Combo1(10)的项目

    Private SubForm_Load()

    For i = 0 To 10

    Combo1.AddItem "Combo1("& i & ")"

    Next

    End Sub

    2ListCount属性

    返回控件列表中部分项目的个数。

    语法:

    object.ListCount

    object:对象表达式。

    示例:

    下例演示的是如何向ComboBox控件中加载项目。程序运行后单击窗体,在标签控件中将显示ComboBox控件中所加载项目的个数,如图2所示。

     

    2 ListCount属性的应用示例

    程序完整代码如下:

    '单击窗体时在标签控件中将显示ComboBox控件中所加载项目的个数

    Private SubForm_Click()

    Label1.Caption ="列表中的项目为:" & Combo1.ListCount& ""

    End Sub

    'ComboBox控件中加入121个项目

    Private SubForm_Load()

    For i = 0 To 120

    Combo1.AddItem "Combo1("& i & ")"

    Next

    End Sub

    3ListIndex属性

    返回或设置控件中当前选择项目的索引。

    语法:

    object.ListIndex [=index]

    object:对象表达式。

    index:数值表达式,指定当前项目的索引。

    示例:

    下面的例子演示的是ComboBox控件的ListIndex属性,用于显示每个季节的销售额。程序运行时,在ComboBox控件中选择季节名称,在标签中就会显示出该季节的销售信息,如图3所示。

     

    3 ListIndex属性的应用示例

    程序完整代码如下:

    Dim Season(0 To 3) '声明两个数组的大小

    Dim Sale(0 To 3)

    'ComboBox控件中选择季节名称,在标签中就会显示出该季节的销售信息

    Private Sub Combo1_Click()

    Label1.Caption = Combo1.Text & " "& Sale(Combo1.ListIndex)

    End Sub

    '窗体加载时设置ComboBox控件的项目名称和项目索引

    Private Sub Form_Load()

    Dim i '声明变量

    AutoSize = True

    Season(0) = "春季"

    Season(1) = "夏季"

    Season(2) = "秋季"

    Season(3) = "冬季"

    Sale(0) = "$1300,500"

    Sale(1) = "$208,900"

    Sale(2) = "$1,412,500"

    Sale(3) = "$1,220,500"

    For i = 0 To 3 '在列表中添加名字

    Combo1.AddItem Season(i)

    Next i

    Combo1.ListIndex = 0 '显示列表中的第一项

    End Sub

    4Style属性

    返回或设置一个值,该值用来指示控件的显示类型和行为。该属性在运行时为只读。

    语法:

    object.Style

    object:对象表达式。其设置值如表2所示。

    2object的设置值

    常数

    说明

    VbComboDropDown

    0

    下拉式组合框。包括一个下拉式列表和一个文本框。可以从列表选择或在文本框中输入

    VbComboSimple

    1

    简单组合框。包括一个文本框和一个不能下拉的列表。可以从列表中选择或在文本框中输入内容

    VbComboDrop-DownList

    2

    下拉式列表。这种样式仅允许从下拉式列表中选择

    下面的例子演示的是ComboBox控件的Style属性。设置3个不同的属性值后的效果如图4和图5所示。

     

    4 未添加时的效果

     

    5 添加后的效果

    3.方法

    下面介绍ComboBox控件比较重要的方法。

    1AddItem方法

    用于将项目添加到ComboBox控件中。不支持命名参数。

    语法:

    object.AddItem item,index

    object:必需的。对象表达式。

    item:必需的。字符串表达式,用来指定添加到对象的项目。

    index:可选的整数值,用来指定新项目或行在该对象中的位置。

    示例:

    下面的例子演示的是ComboBox控件的AddItem方法。利用AddItem方法将月份信息添加到ComboBox控件的列表当中,如图6所示。

     

    6 AddItem方法的应用示例

    程序完整代码如下:

    '将项目1月到12月添加到ComboBox控件中

    Private Sub Form_Load()

    For i = 0 To 11

    Combo1.AddItem i + 1 & ""

    Next

    End Sub

    2Clear方法

    用于清除ComboBox控件中的内容。

    语法:

    object.Clear

    object:对象表达式。

    示例:

    下例演示的是,当程序运行的时候,单击窗体上的“清除”按钮将清除ComboBox控件中的内容,如图7所示。

     

    7 Clear方法的应用

    程序相关代码如下:

    '点击清除按钮时清除ComboBox控件中的内容

    Private Sub Command1_Click()

    Combo1.Clear

    End Sub

    程序完整代码:

    '点击清除按钮时清除ComboBox控件中的内容

    Private SubCommand1_Click()

    Combo1.Clear

    End Sub

    '窗体启动时将项目1月到12月添加到ComboBox控件中

    Private SubForm_Load()

    For i = 0 To 11

    Combo1.AddItem i + 1& " "

    Next

    End Sub

    4.事件

    ComboBox控件的常用事件如表3所示。

    3ComboBox控件的常用事件

    编号

    事件

    说明

    1

    Change

    当控件的内容发生改变时发生。该事件仅在Style属性设置为0(下拉Combo)或1(简单Combo)和正文被改变或者通过代码改变了Text属性的设置时才会发生

    2

    DblClick

    当在一个对象上按下和释放鼠标按键并再次按下和释放鼠标按键时,该事件发生

    3

    DropDown

    该事件是当ComboBox控件的列表部分正要展开时发生

    4

    Scroll

    ComboBox控件的滚动条被重新定位时,此事件发生

     

    下面对比较重要的事件进行详细介绍。

    1Change事件

    改变控件文本框部分的正文。该事件仅在Style属性设置为01和正文被改变或者通过代码改变了Text属性的设置时才会发生。

    语法:

    Private Subobject_Change([index As Integer])

    object:对象表达式。

    index:一个整数,用来惟一地标识一个在控件数组中的控件。

    2Click事件

    此事件在ComboBox控件上按下然后释放一个鼠标按键时发生,也会在一个控件的值改变时发生。

    语法:

    Private Subobject_Click([index As Integer])

    object:对象表达式。

    index:一个整数,用来惟一地标识一个在控件数组中的控件。

    应用一:带查询功能的ComboBox控件

    实例说明

    如果在下拉列表中的项目过多,想在其中选择需要的项目是很困难的。如果ComboBox控件具有查询功能就会很方便。下面将介绍带有查询功能ComboBox控件的实例。运行程序。在ComboBox控件中输入信息,如果在ComboBox列表框中有与之相匹配的信息,即可将全部信息显示在文本框中。如本实例中,在文本框中输入“麻”,由于在下面的列表中有与之相匹配的“麻辣火锅”,则在文本框中可直接显示“麻辣火锅”。实现效果如图8所示。

     

    8 带查询功能的ComboBox控件

    思路与技术

    在实现带查询功能的ComboBox控件时,主要应用了API函数中的SendMessage函数。本实例中利用SendMessage函数将参数传递给ComboBox控件,以实现查询的功能。SendMessage函数用于调用一个窗口的窗口函数,将一条消息发给那个窗口。直到消息被处理完毕,该函数才会返回。

    其函数声明如下:

    Private Declare FunctionSendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long,ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) AsLong

    参数说明:

    l l hWnd Long型,要接受消息的那个窗口的句柄。

    l l wMsg Long型,消息的标识符。

    l l wParam Long型,具体取决于消息。

    l l IParam Any型,具体取决于消息。

    开发步骤

    1)新建一个标准工程,创建一个新窗体,默认名为Form1

    2)在窗体上添加一个Frame控件

    3)在Frame1上添加一个Label控件,用于显示提示信息;一个ComboBox控件,用于查询信息;一个Image控件,用于显示图片,并设置其Picture属性。

    在窗体中控件说明如表4所示。

    4Form1窗体中控件部分属性设置

    控件名

    属性

    ComboBox

    Name

    Combo1

    Frame

    Name

    Frame1

    Image

    Name

    Image1

    ListBox

    Name

    Caption

    List1

    在组合框中输入信息,如果列表中含有与之相匹配的信息,即可显示在文本框中。

    4)为Form1窗体添加如下代码。

    Private Declare FunctionSendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) AsLong

    Const CB_FINDSTRING =&H14C

    Const CB_ERR =(-1)

    '带查询功能的ComboBox控件

    Private SubCombo1_KeyPress(KeyAscii As Integer)

    Dim Temp As Long

    Dim MyStr AsString

    If Combo1.SelLength = 0Then

    '如果选择的字符为零,将列标框中的文本与键入的字符相组合

    MyStr = Combo1.Text& Chr(KeyAscii)

    Else '如果选择的字符数不为零

    MyStr = Left(Combo1.Text,Combo1.SelStart) & Chr(KeyAscii)

    End If

    '在列表框控件中查找与变量MyStr相匹配的字符串。

    '如果找到,则返回值为第一个匹配的字符串的索引值。如果未找到,则返回值为-1

    Temp =SendMessage(Combo1.hwnd, CB_FINDSTRING, True, ByValMyStr)

    If Temp<> CB_ERR Then '如果找到

    Combo1.ListIndex = Temp'将找到的项目添加到编辑部分

    Combo1.SelStart =Len(Combo1.Text) '将光标设置在文本尾部

    End If

    KeyAscii = 0

    End Sub

     

    '窗体启动时将项目添加到ComboBox控件中

    Private SubForm_Load()

    '向类标框中添加项目

    Combo1.AddItem"美式炸鸡": Combo1.AddItem "中国饺子": Combo1.AddItem "冰淇淋"

    Combo1.AddItem"春卷": Combo1.AddItem "陕西凉皮": Combo1.AddItem "麻辣火锅"

    Combo1.AddItem"四川麻辣烫": Combo1.AddItem "东北饺子王": Combo1.AddItem "香格里拉"

    Combo1.AddItem "K F C":Combo1.Text = ""

    End Sub

    应用二:将数据表中的字段添加到ComboBox控件

    实例说明

    本实例实现的是将数据表中的字段名添加到ComboBox控件中。运行程序,单击“添加”按钮,即可将本实例文件夹下的数据库(db_medicine. mdb)中的数据表(tb_xsd)中的字段添加到ComboBox控件中,实现效果如图9所示。

     

    9 将数据表中的字段添加到ComboBox控件

    思路与技术

    要将数据表中的字段添加到ComboBox控件,需通过数据集对象提取相应表中的字段的名称并将其保存到ComboBox控件中。下面介绍一下ComboBox控件的AddItem方法。

    AddItem方法用于将项目添加到ComboBox控件中。

    语法形式如下:

    object.AddItem item,index

    参数说明:

    l l object 必需的。一个对象表达式。

    l l Item 必需的。字符串表达式,用来指定添加到该对象中的项目。

    l l Index 可选的。是整数,用来指定新项目或行在该对象中的位置。

    开发步骤

    1)新建一个标准工程,创建一个新窗体,将其命名为main_cxtj_sellfind

    2)在窗体上添加一个Frame控件

    3Frame1上添加一个Label控件和一个PictureBox控件,并设置PictureBox控件的Picture属性。

    4Frame1上添加一个ComboBox控件,将其命名为Cbx_Fields,主要用于存储数据表中的字段信息。再添加一个CommandButton控件,将其命名为Cmd_Add,主要用于执行添加操作。

    main_cxtj_sellfind窗体中控件部分属性设置如表5所示。

    5main_cxtj_sellfind窗体中控件部分属性设置

    控件名

    属性

    ComboBox

    Name

    Cbx_Fields

    CommandButton

    Name

    Caption

    Cmd_Add

    添加

    Frame

    Name

    Frame1

    Label

    Name

    Caption

    Label1

    字段名称

    PictureBox

    Name

    Picture1

    5)为main_cxtj_sellfind窗体添加如下代码。

    Dim fld

    Dim rs As NewADODB.Recordset '定义数据集对象

    '建立数据库连接

    Function cnn() AsADODB.Connection '定义连接函数

    '创建连接

    Set cnn = NewADODB.Connection

    cnn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &App.Path & "db_medicine.mdb;Persist SecurityInfo=False"

    End Function

     

    '单击添加按钮将数据表中的字段名添加到ComboBox控件中

    Private Sub Cmd_Add_Click()'添加按钮

    rs.Open "select * fromtb_xsd", cnn, adOpenKeyset, adLockOptimistic

    Set fld =rs.Fields

    For Each fld Inrs.Fields

    'ComboBox控件中添加字段

    Cbx_Fields.AddItemfld.Name

    Next

    rs.Close

    Cbx_Fields.ListIndex =0

    End Sub

    应用三:如何将一个ComboBox控件放到Toolbar控件

    Toolbar控件可以摆放任意Button控件。方法都是用Add方法将Button对象添加到Toolbar控件中去。每个按钮的状态都由Style属性决定。

    例如运行程序Combo1控件自动添加到Toolbar1工具栏上。

    最终效果如图10所示。

     

    10 将一个ComboBox控件放到Toolbar控件

    ★★★★★ Form1 ★★★★★★

    程序代码如下:

    '窗体启动时将一个ComboBox控件放到Toolbar控件

    Private SubForm_load()

    Dim btn As Button'声明Button类型变量

    Combo1.AddItem "LOVING"'添加列表项

    Combo1.AddItem"李小葱"

    Combo1.AddItem"葱葱"

    Combo1.Text = "loving"'设置下拉列表项当前内容

    Me.Show '显示窗体

    Set btn =Toolbar1.Buttons.Add() '添加Button

    btn.Style = tbrSeparator'设置Button类型

    Set btn =Toolbar1.Buttons.Add() '添加Button

    btn.Style = tbrPlaceholder'设置Button类型

    btn.Key = "ComboBox"'设置关键字

    btn.Width = 1000'设置宽度

    Set btn =Toolbar1.Buttons.Add '添加Button

    btn.Style = tbrDefault'设置Button类型

    Set btn =Toolbar1.Buttons.Add '添加Button

    btn.Style = tbrDefault'设置Button类型

    Set Combo1.Container =Toolbar1设置Combo1的所在容器

    Combo1.ZOrder 0'设置Combo1位于图层顶端

    Combo1.Width =Toolbar1.Buttons("ComboBox").Width '设置Combo1宽度

    Combo1.Top =Toolbar1.Buttons("ComboBox").Top '设置Combo1顶端坐标

    Combo1.Left =Toolbar1.Buttons("ComboBox").Left '设置Combo1左端坐标

    Combo1.Visible = True'Combo1可见

    End Sub

    应用四:注意ComboBox控件的只读属性

    在“工作日志管理”窗体中,单击工具栏上的“添加”按钮添加工作日志信息时(如图11所示),弹出如图12所示的错误提示信息。

     

    11 单击工具栏上的“添加”按钮添加工作日志信息

     

    12 在添加工作日志信息时弹出的错误提示信息

    在添加工作日志信息时,需要将“日志类型”下拉列表框中的内容清空。“ComboBox”控件的“Style”属性有3个属性值,即“0-Dropdown Combo”、“1-SimpleCombo”和“2-Dropdown List”。当将“Style”属性设置为“2-Dropdown List”时,“ComboBox”控件的“Text”属性被设为只读,将无法再为控件的“Text”属性赋值,所以在添加工作日志信息时,一旦给“ComboBox”控件的“Text”属性赋予空值,就会弹出错误提示。解决的方法是在“ComboBox”控件的属性窗口中将“ComboBox”控件的“Style”属性设置为“0-Dropdown”,如图13所示。

     

    13 设置“ComboBox”控件的“Style”属性

     

     

    展开全文
  • 组合框和列表框 combobox和com demo 基于对话框,后面全是默认设置 一直下一步,完成即可 修改二者的id 所有组合框和列表框都有一个索引,都是从0开始的 列表框控件 自带排序 只要大于-1,就是有当前选中的 .....

    组合框和列表框

    combobox和com

    demo

    基于对话框,后面全是默认设置

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一直下一步,完成即可
    在这里插入图片描述
    在这里插入图片描述

    修改二者的id

    所有组合框和列表框都有一个索引,都是从0开始的

    列表框控件
    自带排序

    在这里插入图片描述

    只要大于-1,就是有当前选中的

    给两个按钮添加点击事件
    在这里插入图片描述

    增加按钮
    void CdemoDlg::OnBnClickedButton1()
    {
    	// TODO: 在此添加控件通知处理程序代码
    
    	CString strText;
    	GetDlgItemText(IDC_EDT_TEXT,strText);
    
    	m_cmb_demo.AddString(strText);
    	m_cmb_demo.SetCurSel(m_cmb_demo.GetCount()-1);//因为从0开始,所以最后一个是count-1,当前选中的是最后一个,即总个数减一
    	//添加后,默认是最后一个
    	m_lst_demo.AddString(strText);
    
    	m_lst_demo.SetCurSel(m_lst_demo.GetCount()-1);
    
    }
    
    删除按钮
    void CdemoDlg::OnBnClickedButton2()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	int nIndex;
    
    	//组合框
    	nIndex = m_cmb_demo.GetCurSel();//得到索引	//每一项都会有一个索引
    	if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
    	{	
    		m_cmb_demo.DeleteString(nIndex);
    		if(nIndex<m_cmb_demo.GetCount())
    			m_cmb_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
    		else
    			m_cmb_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
    	}
    
    
    	//列表框
    	nIndex = m_lst_demo.GetCurSel();	//每一项都会有一个索引
    	if(nIndex>-1)//说明有选中的项,下标从0开始,没有就是-1;
    	{	
    		m_lst_demo.DeleteString(nIndex);
    		if(nIndex<m_lst_demo.GetCount())
    			m_lst_demo.SetCurSel(nIndex);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
    		else
    			m_lst_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
    	}
    
    
    	//删的时候,两边都选
    
    
    }
    
    

    防止回车退出

    
    void CdemoDlg::OnOK()
    {
    	// TODO: 在此添加专用代码和/或调用基类
    
    	//CDialogEx::OnOK();
    }
    
    

    MFC中Listbox控件的简单使用

    	http://blog.sina.com.cn/s/blog_6ca43ae701019h8k.html
    
        http://blog.csdn.net/winerdaxian/article/details/6560060
        http://www.jizhuomi.com/software/186.html
    
    	https://my.oschina.net/ranjiewen/blog/781090
    	https://blog.csdn.net/chengke1866/article/details/100695768?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242
    

    MFC中listbox控件是为了显示一系列的文本,每个文本占一行。

    Listbox控件可以设置属性为:

    LBS_CHILD :(默认)子窗口

    LBS_Visible :(默认)可视

    LBS_Multiplesel :可选择多行

    LBS_Extendedsel :可以使用shift或ctrl选择多行

    LBS_SORT:所有行按字母顺序进行排序

    对Listbox进行操作:

    Int listbox.AddString ( LPCTSTR Str) :对listbox的首行添加一个str的文本行,即此时nIndex为0;

    Int listbox.DeleteString (uint nIndex) :删除listbox中第nIndex行的文本行,注意nIndex是从0起始的;

    int listbox.InsertString (uint xIndex, LPCTSTR Str):在listbox中第nIndex行插入一个str的文本行;

    Int listbox.GetCount ( ):获取listbox的行的总数目;

    Int listbox.GetCurSel ( ):得到listbox选中的文本行的行数。

    Void listbox.ResetContent ( ):清除listbox中的所有数据;

    Int listbox.GetCurCount ( ):获取listbox被选中的行的数目;

    Int listbox.FindString ( int nstart , LPCTSTR Str ):从第nstart行开始起进行查找,查找Str的文本行;

    Int listbox.SelectString ( int nstart, LPCTSTR Str ) :从第nstart行开始,选择包含Str字符串的那一行;

    对Listbox中某一行进行双击操作,要产生一个响应函数的步骤:

    > 在 BEGIN_MESSAGE_MAP() END_MESSAGE_MAP() 之间添加响应函数的消息映射,如函数名为CDlg::OnLbnDblClk,添加下面代码
    ON_LBN_DBLCLK(IDC_LIST1,&C
    Dlg::OnLbnDblClk) //IDC_LIST1为listbox控件的ID
    然后在CDlg.h中添加函数OnLbnDblClk()的声明 最后在CDlg::OnLbnDblClk()函数中添加实现代码即可

    在这里插入图片描述
    按照默认即可
    在这里插入图片描述
    之后双击,会定位到写代码的地方

    c++mfclistbox双击事件

    void CdemoDlg::OnLbnSelchangeListDemo()
    {
    	//对每一行添加事件的方法
    //	列表控件可以返回第几行,然后你可以通过行获得行内容。直接点击列表控件可添加点击事件。
    
    	//CString strText1;
    	//GetDlgItemText(IDC_LIST_DEMO,strText1);
    
    		MessageBox(_T("点击弹出一个框"));//弹出一个框
    
    
    //	MessageBox()
    	//列表框
    	//int nIndex1;
    //	nIndex1 = m_lst_demo.GetCurSel();	//每一项都会有一个索引
    	//m_lst_demo.DeleteString(nIndex1);
    
    	/*
    	if(nIndex1>-1)//说明有选中的项,下标从0开始,没有就是-1;
    	{	
    		m_lst_demo.DeleteString(nIndex1);
    		if(nIndex1<m_lst_demo.GetCount())
    			m_lst_demo.SetCurSel(nIndex1);//设当前选中的为下一项,删除第3项,则下一项又变成了第三项
    		else
    			m_lst_demo.SetCurSel(0);	//如果所删的元素后面没有了,那就选中设为第一项	
    	}
    
    	*/
    }
    
    展开全文
  • MFC 组合框ComboBox总结

    千次阅读 2013-07-23 17:01:24
    Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的...
  • MFC 组合框(下拉框) CComboBox

    千次阅读 2018-11-03 20:28:07
    常用属性设置: 属性 ...组合框添加一个字符串 ...获取组合框中当前选中项的下标 ... //获取组合框中当前选中项的下标 ...组合框常用的事件为:CBN_SELCHANGE,当选择组合框某一项时,自动触发此事件。  
  • mfc编辑一个combobox,一般选择内容是字符串,现在要选择位图图片,怎么做?在网上查要用到扩展类,不全面没有实现,求大神贴代码指点!
  • MFC 组合框的用法大全

    千次阅读 2018-06-18 23:31:14
    Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。下面的例子...
  • MFC组合框控件总结及用法示例

    万次阅读 2014-04-26 23:01:50
    Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。编程时...
  • 类似于qq的登录历史账号右边的删除按钮,一般用于客户端的登录界面,vs2008编译通过,debug文件夹可查看编译好的exe
  • mfc组合框问题

    2013-12-04 16:40:48
    mfc tab控件中使用多个组合框编程中,发现组合框只能在钱三个选项卡中正常使用,后面的选项卡则不能正常使用,只能将组合框ID改成前三个选项卡中的一个特定ID才行,下面一张图片是第四个选项卡中的ID是第三个组合...
  • 如题,准备做一个查询系统,想在组合框中输入查询内容,点击查询,连接access数据库,将所得内容输出在编辑框中~数据库做好了
  • MFC组合框的问题

    2015-07-09 11:47:16
    如何让下拉式组合框的编辑框只能输入数字
  • MFC 组合框的使用讲解

    千次阅读 2012-11-20 11:04:13
    MFC 4.2中对组合框进行了增强,你可以在组合框中使用ImageList,有一个新的类CComboBoxEx(由CComboBox派生)来实现这一功能。在CComboBoxEx类中添加了一些新的成员函数来实现新的功能:首先你需要调用CImageList*...
  • MFC 组合框的使用

    千次阅读 2012-12-08 14:51:52
    MFC 4.2中对组合框进行了增强,你可以在组合框中使用ImageList,有一个新的类CComboBoxEx(由CComboBox派生)来实现这一功能。在CComboBoxEx类中添加了一些新的成员函数来实现新的功能:首先你需要调用CImageList*...
  • 组合框的响应函数CBN_SELENDOK是什么意思,求通俗点的解释,新手上路,太专业不懂,嘿嘿,谢谢啦
  • MFC组合框如何使用

    2012-09-09 22:16:07
    我希望利用组合框做固定的几项选择,选择后能自动改变几个变量的值并改变另外几个编辑框的显示内容,如何操作?求详解
  • VC MFC组合框(CComboBox)控件

    千次阅读 2011-08-07 10:11:17
    组合框: 自绘组合框(显示图标) 要了解的概念:组合框是由一个编辑框和列表框组合而成的. CComboBox类里要了解的函数: SetItemHeight//设置列表框项,或编辑框高度,第一个参数为-1表示设置编辑框高度,0表示列表...
  • 组合框控件和树形控件都能单独实现,就是将两者结合起来不知道怎么弄
  • MFC组合框Combox如何自动弹出列表? 我想通过键盘输入文字然后通过文字的匹配自动的弹出下拉列表的显示;请问怎么实现??
  • 当改变外面大的组合框中(方法)中的内容时,里面小组合框中的内容也要相应改变 比如,现在显示局部适应,里面显示半径等,当选另一个方法时,要同时改变里面的内容,比如显示伽马值,应该如何实现? 谢谢[img=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,632
精华内容 5,852
关键字:

mfc组合框