精华内容
下载资源
问答
  • 列表框和组合框的区别是:1、当列表框不能同时显示所有项目时,会自动添加滚动条,而组合框不一定;2、列表框是显示一系列项供用户选择的控件,组合框是一个编辑框带一个可以下拉的列表框;3、列表框和组合框的数据...

    列表框和组合框的区别是:1、当列表框不能同时显示所有项目时,会自动添加滚动条,而组合框不一定;2、列表框是显示一系列项供用户选择的控件,组合框是一个编辑框带一个可以下拉的列表框;3、列表框和组合框的数据类型不同。

    9a9af89526687cf13c2039f0ff28bc04.png

    列表框与组合框的区别如下:

    1、自动排序方式

    当列表框不能同时显示所有项目的时候,将自动添加滚动条,使用户可以滚动查阅所有选项。组合框的风格取值定义了组合框的具体属性,包括是否自动排序,是否有滚动条。

    2、项目输入方式

    列表框是显示一系列项供用户选择的控件,对选中的项可以进行后续的处理。用户选择可以是多项的。组合框是一个编辑框带一个可以下拉的列表框,用户在下拉框中选择的项会进入编辑框中,再进行后续处理,在编辑框中也可以直接输入。

    3、数据类型

    在组合框中有Simple、Dropdown、Drop List三种类型。Simple类型的组合框和列表框部分是固定显示的,不能下拉;而其余两种带一个下拉手柄。设计中别忘记添加滚动条。Dropdown与Drop List的区别是后者的编辑框不能输入。

    在列表框中有Simple、 Multiple、Extended三种类型,它们决定了用户选取项的方法。Simple模式只能够选取单项,Multiple模式可以按Ctrl键+鼠标左键选取多个项,而Extended则可以通过鼠标拖处矩形一次选取连续的项,也可以加按Ctrl键作多次选择。

    展开全文
  • 列表框改装组合框.mdb

    2013-05-11 22:11:25
    列表框改装组合框 这里用实力的方式展示了列表框和组合框的区别,方便同志们学习。
  • 组合框包括列表框和文本框的功能 文本框:只能输入数据 列表框:只能选择数据 组合框:既能输入数据,又能选择“ 应用背景:在页面中有两个列表框,需要把其中一个列表框的元素移动到另一个列表框 。  实现...
  • 区别:1、vue中数据由data属性在Vue对象中进行管理,...一、VueReact框架不同点模板jsx、状态管理、组件嵌套条件渲染、列表渲染、组件间通信传值、路由管理1、模板jsxvue:Vue.js 把html,css,js组合...

    区别:1、vue中的数据由data属性在Vue对象中进行管理,react中的数据由state属性管理;2、vue通过slot插槽进行嵌套传递,react通过“props.children”的方式将标签内的部分传递给子组件。

    a46106e296c096f2b9bc5df07ba75e49.png

    一、Vue和React框架的不同点模板和jsx、状态管理、组件嵌套条件渲染、列表渲染、组件间的通信传值、路由管理

    1、模板和jsx

    vue:Vue.js 把html,css,js组合到一起,用各自的处理方式,使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。

    d09572888a4955f6059d94a2631f581e.png

    react:HTML 语言直接写在 JavaScript 语言之中,不加任何引号,简单说这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写。

    473a0077f1069d08ce42079f10018d07.png

    2、状态管理

    vue:数据由data属性在Vue对象中进行管理。

    react:数据由state属性管理,但不能直接改变state的状态,需要通过setState()去更新。

    273ebd47531e2269d2c08879d97f71b0.png

    3、组件嵌套

    vue:通过slot插槽进行嵌套传递

    父组件嵌套子组件wrap

    89ffbb5f73ee07337d82165b612f0fcc.png

    子组件wrap

    bf9a3078cc86ae195aa4ee8a59d92d52.png

    渲染结果

    ad3b416ccbae25fd5120c3740789b39f.png

    react:通过props.children的方式将标签内的部分传递给子组件

    父组件嵌套子组件wrap

    11a1c2c86fac555aaae02e4571befe8e.png

    子组件wrap

    5951e5070e9b96b54e3c31c2065923f7.png

    4、条件渲染和列表渲染

    vue条件渲染:v-if、v-show条件渲染一组数。

    vue列表渲染:v-for一组数进行列表渲染。

    f65f5c479922ad730150264e02750c29.png

    react条件渲染:使用逻辑运算&& || 、三目运算符来创建表示当前状态的元素。

    react列表渲染:通过使用{}在JSX内构建一个元素集合,使用map()方法循遍历数组。

    759418d9d5f18b6d85cc98bddf62b1d3.png

    5、组件间的通信传值

    vue:

    父传子:通过父组件绑定自定义属性(或通过v-bind绑定动态属性),子组件使用 props 选项时显式的声明props,以便它可以从父组件接收到期望的数据。

    子传父:通过父组件绑定自定义事件,子组件通过this.emit('自定义事件',value)传值。

    非父子:可以使用一个空的 Vue 实例绑定在Vue实例的原型上作为一个事件总线中心(vue.prototype.eventBus = new Vue()),用emit触发事件,on监听事件。

    父组件one

    b2053ce1611f7ed9965762bb9483c942.png

    子组件one-one

    9a87ca4a6923522dd9a21e1570718e98.png

    react:

    父传子:通props属性进行传递。

    子传父:父组件定义事件,子组件触发父组件中的事件时,通过实参的形式来改变父组件中的数据来通信。

    非父子:嵌套不深的非父子组件可以使共同父组件,嵌套的深可以用redux共享状态。

    父组件

    176b135e5cf5a03ed9922855e0f6a163.png

    子组件

    4cc3e63705431620ab1cf073e09a633f.png

    6、路由管理

    vue-router是全局配置方式,vue-router任何路由组件都会被渲染到位置。

    11fb6e9bb8114824208bc95343f30fb9.png

    0a9e01313a1024020368a3112c2567c8.png

    react-router是全局组件方式,react-router子组件作为children被传入父组件。

    ace3890435aec59acb90b3c15238c754.png

    二、Vue和React框架的相同点

    组件化:React与Vue都鼓励将你的应用分拆成一个个功能明确的模块,这样的组件化使得结构清晰且易复用。

    虚拟Dom:为高效渲染页面,减少性能的消耗,都采取了Virtual Dom。

    配套框架:两个框架都专注于UI层,其他的功能如路由、状态管理(vuex,redux)等都交由同伴框架进行处理。

    构建工具:React可以使用Create React App (CRA),而Vue对应的则是vue-cli。

    更多编程相关知识,请访问:编程教学!!

    展开全文
  • ③下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。    经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,

    组合框控件简介

       组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。
    ① 简易组合框中的列表框是一直显示的;② 下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框;③下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。

       经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,它们在很多时候能使程序看起来更专业,更简洁,让用户在进行选择操作时更方便。
       组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:
    CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
    CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
    CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
    CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
    CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
    CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
    CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
    CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
    CBN_KILLFOCUS:组合框失去了输入焦点
    CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
    CBN_SETFOCUS:组合框获得了输入焦点

    组合框控件的创建

       MFC将组合框控件的所有操作都封装到了CComboBox类中。我们在对话框中加入组合框时,可以往对话框模板中拖入Combo Box控件,而后添加CComboBox类型的控件变量使用,但如果我们想在程序中动态创建的话,就要使用CComboBox类的成员函数Create了。Create函数的原型如下:

    virtual BOOL Create(
       DWORD dwStyle,
       const RECT& rect,
       CWnd* pParentWnd,
       UINT nID
    );
    

       大家可以看出,CComboBox类的Create成员函数同前面几个控件类的Create成员函数非常类似,dwStyle指定组合框控件的风格,rect为列表框弹出后组合框的位置和尺寸,pParentWnd是指向父窗口的指针,不能为NULL,nID指定组合框控件的ID。最后还是重点讲讲dwStyle参数。组合框控件的风格包括以下几种,并给出了相应说明:
    CBS_AUTOHSCROLL:使编辑框组件具有水平滚动的风格
    CBS_DISABLENOSCROLL:使列表框在不需要滚动时显示一个禁止的垂直滚动条
    CBS_DROPDOWN:指定一个下拉式组合框
    CBS_DROPDOWNLIST:指定一个下拉列表式组合框
    CBS_HASSTRINGS:指定一个含有字符串的自绘式组合框
    CBS_LOWERCASE:将编辑框和列表框中的所有文本都自动转换为小写字符
    CBS_NOINTEGRALHEIGHT:组合框的尺寸由应用程序而不是Windows 指定,通常,由Windows指定尺寸会使列表项的某些部分隐藏起来
    CBS_OEMCONVERT:使编辑框组件中的正文可以在ANSI 字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的
    CBS_OWNERDRAWFIXED:指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度
    CBS_OWNERDRAWVARIABLE:指定自绘式组合框,并且列表项有不同的高度
    CBS_SIIMPLE:指定一个简易组合框
    CBS_SORT:自动对列表框组件中的项进行排序
    CBS_UPPERCASE:将编辑框和列表框中的所有文本都自动转换为大写字符

       dwStyle参数可以是以上风格的组合。跟其他控件一样,创建时一般也还要指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_VSCROLL等风格。
       在对话框模板中直接添加组合框控件时,其属性页中的属性包含了以上风格,例如属性Uppercase设为True就相当于指定了CBS_UPPERCASE风格。

    CComboBox类的主要成员函数

       因为组合框是由编辑框和列表框组合而成的,所以组合框的操作和编辑框与列表框的操作有很多相似之处,同样的,CComboBox类的成员函数也和CEdit类与CListBox类的成员函数有很多相似之处,不但功能相似,甚至函数名和参数也很相似。下面大概讲解下CComboBox类的主要成员函数,更详细的内容可以参见MSDN。

       int GetCount( ) const;
       获取组合框控件的列表框中列表项的数量。
       int GetCurSel( ) const;
       获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。
    
       int SetCurSel(int nSelect);
       在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。
    
       DWORD GetEditSel( ) const;
       获取组合框控件的编辑框中当前选择范围的起始和终止字符的位置。该函数返回一个32位数,低16位存放起始位置,高16位存放选择范围后第一个非选择字符的位置。如果该函数用于下拉列表式组合框时,会返回CB_ERR。
    
       BOOL SetEditSel(int nStartChar,int nEndChar);
       用于在组合框控件的编辑框中选择字符。nStartChar参数指定起始位置,nEndChar参数指定终止位置。
    
       DWORD_PTR GetItemData(int nIndex) const;
       获取组合框中指定项所关联的32位数据。nIndex参数指定组合框控件的列表框某项的索引(从0开始)。
    
       int SetItemData(int nIndex,DWORD_PTR dwItemData);
       为某个指定的组合框列表项设置一个关联的32位数。nIndex参数指定要进行设置的列表项索引。dwItemData参数指定要关联的新值。
    
       void GetLBText(int nIndex,CString& rString) const;
       从组合框控件的列表框中获取某项的字符串。nIndex参数指定要获取字符串的列表项的索引,CString参数用于接收取到的字符串。
    
       int GetLBTextLen(int nIndex) const;
       获取组合框控件的列表框中某项的字符串长度。nIndex参数指定要获取字符串长度的列表项的索引。  
    
       int GetTopIndex( ) const;
       获取组合框控件的列表框中第一个可见项的索引。
    
       int SetTopIndex(int nIndex);
       将组合框控件的列表框中某个指定项设置为可见的。nIndex参数指定了该列表项的索引。该函数成功则返回0,有错误发生则返回CB_ERR。
    
       BOOL LimitText(int nMaxChars);
       用于限制用户在组合框控件的编辑框中能够输入的最大字节长度。nMaxChars参数指定了用户能够输入文字的最大字节长度,如果为0则长度被限制为65535个字节。
    
       int AddString(LPCTSTR lpszString);
       为组合框控件中的列表框添加新的列表项。lpszString参数是指向要添加的字符串的指针。该函数的返回值如果大于等于0,那么它就是新列表项的索引,而如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。
    
       int DeleteString(UINT nIndex);
       删除组合框中某指定位置的列表项。nIndex参数指定了要删除的列表项的索引。该函数的返回值如果大于等于0,那么它就是组合框中剩余列表项的数量。如果nIndex指定的索引超出了列表项的数量则返回CB_ERR。
    
       int FindString(int nStartAfter,LPCTSTR lpszString) const;
       在组合框控件的列表框中查找但不选中第一个包含指定前缀的列表项。nStartAfter参数指定了第一个要查找的列表项之前的那个列表项的索引。lpszString指向包含要查找的前缀的字符串。该函数的返回值如果大于等于0,那么它是匹配列表项的索引,如果查找失败则返回CB_ERR。
    
       int InsertString(int nIndex,LPCTSTR lpszString);
       向组合框控件的列表框中插入一个列表项。nIndex参数指定了要插入列表项的位置,lpszString参数则指定了要插入的字符串。该函数返回字符串被插入的位置,如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。
    
       int SelectString(int nStartAfter,LPCTSTR lpszString);
       在组合框控件的列表框中查找一个字符串,如果查找到则选中它,并将其显示到编辑框中。参数同FindString。如果字符串被查找到则返回此列表项的索引,如果查找失败则返回CB_ERR,并且当前选择项不改变。
    

      此外,CComboBox类还继承了CWnd类的成员函数GetWindowText、SetWindowText等。

    CComboBox类应用实例

      最后给大家写一个简单的实例,说明CComboBox的几个成员函数及通知消息等的使用方法。此实例实现的功能:在组合框中包含一个网站列表,切换组合框控件的列表框中选择的列表项时,将新选中的列表项的文本显示到编辑框中。下面是具体实现步骤:

    1. 创建一个基于对话框的MFC工程,名称设置为“Example25”。
    2. 在自动生成的对话框模板IDD_EXAMPLE25_DIALOG中,删除“TODO: Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个Combo Box控件,ID设置为IDC_WEB_COMBO,Type属性设为Drop List,为下拉列表式组合框,编辑框不允许用户输入,Sort属性设为False,以取消排序显示。再添加一个静态文本控件和一个编辑框,静态文本控件的Caption属性设为“您选择的网站:”,编辑框的ID设为IDC_SEL_WEB_EDIT,Read Only属性设为True。
    3. 为组合框IDC_WEB_COMBO添加CComboBox类型的控件变量m_comboWeb。
    4. 在对话框初始化时,我们将站点名加入到组合框中,并默认选择第一项,那么需要修改CExample25Dlg::OnInitDialog()函数为:
    
        BOOL CExample25Dlg::OnInitDialog()   
        {   
            CDialogEx::OnInitDialog();   
          
            // Add "About..." menu item to system menu.   
          
            // IDM_ABOUTBOX must be in the system command range.   
            ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
            ASSERT(IDM_ABOUTBOX < 0xF000);   
          
            CMenu* pSysMenu = GetSystemMenu(FALSE);   
            if (pSysMenu != NULL)   
            {   
                BOOL bNameValid;   
                CString strAboutMenu;   
                bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);   
                ASSERT(bNameValid);   
                if (!strAboutMenu.IsEmpty())   
                {   
                    pSysMenu->AppendMenu(MF_SEPARATOR);   
                    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
                }   
            }   
          
            // Set the icon for this dialog.  The framework does this automatically   
            //  when the application's main window is not a dialog   
            SetIcon(m_hIcon, TRUE);         // Set big icon   
            SetIcon(m_hIcon, FALSE);        // Set small icon   
          
            // TODO: Add extra initialization here   
            // 为组合框控件的列表框添加列表项“鸡啄米”   
            m_comboWeb.AddString(_T("鸡啄米"));   
            // 为组合框控件的列表框添加列表项“百度”   
            m_comboWeb.AddString(_T("百度"));   
            // 在组合框控件的列表框中索引为1的位置插入列表项“新浪”   
            m_comboWeb.InsertString(1, _T("新浪"));   
          
            // 默认选择第一项   
            m_comboWeb.SetCurSel(0);   
            // 编辑框中默认显示第一项的文字“鸡啄米”   
            SetDlgItemText(IDC_SEL_WEB_EDIT, _T("鸡啄米"));   
          
            return TRUE;  // return TRUE  unless you set the focus to a control   
        }  
    
    1. 我们希望在组合框中选中的列表项改变时,将最新的选择项实时显示到编辑框中,那么这就要用到CBN_SELCHANGE通知消息。为列表框IDC_WEB_COMBO的通知消息CBN_SELCHANGE添加消息处理函数CExample25Dlg::OnCbnSelchangeWebCombo(),并修改如下:
    
        void CExample25Dlg::OnCbnSelchangeWebCombo()   
        {   
            // TODO: Add your control notification handler code here   
            CString strWeb;   
            int nSel;   
          
            // 获取组合框控件的列表框中选中项的索引   
            nSel = m_comboWeb.GetCurSel();   
            // 根据选中项索引获取该项字符串   
            m_comboWeb.GetLBText(nSel, strWeb);   
            // 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中   
            SetDlgItemText(IDC_SEL_WEB_EDIT, strWeb);   
        }  
    
    1. 运行程序,弹出结果对话框,在对话框的组合框中改变选择项时,编辑框中的显示会相应改变。效果图如下:
      在这里插入图片描述
        组合框的内容就是这些了。相对于CComboBox类数量不少的成员函数来说,本节的实例只是用到了很少的几个,大家可以根据上面所讲试试其他的成员函数。
    展开全文
  • MFC编程之组合框控件

    2018-05-04 15:46:35
    组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直显示的。 ...

    什么是组合框? 在这里我做了一个例程,选择不同的边缘会又不一样的值,并且能修改和保存。 下面是效果图。
    这里写图片描述
    这里写图片描述

    组合框控件简介

    组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。

    简易组合框中的列表框是一直显示的。

    下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框。

    下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。

    经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,它们在很多时候能使程序看起来更专业,更简洁,让用户在进行选择操作时更方便。

    组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:

    CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
    CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
    CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
    CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
    CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
    CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
    CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
    CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
    CBN_KILLFOCUS:组合框失去了输入焦点
    CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
    CBN_SETFOCUS:组合框获得了输入焦点

    组合框控件的创建

    MFC将组合框控件的所有操作都封装到了CComboBox类中。

    我们在对话框中加入组合框时,可以往对话框模板中拖入Combo Box控件,而后添加CComboBox类型的控件变量使用,但如果我们想在程序中动态创建的话,就要使用CComboBox类的成员函数Create了。Create函数的原型如下:

    virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID
    );

    大家可以看出,CComboBox类的Create成员函数同前面几个控件类的Create成员函数非常类似,dwStyle指定组合框控件的风格,rect为列表框弹出后组合框的位置和尺寸,pParentWnd是指向父窗口的指针,不能为NULL,nID指定组合框控件的ID。最后还是重点讲讲dwStyle参数。组合框控件的风格包括以下几种,并给出了相应说明:

       CBS_AUTOHSCROLL:使编辑框组件具有水平滚动的风格
       CBS_DISABLENOSCROLL:使列表框在不需要滚动时显示一个禁止的垂直滚动条
       CBS_DROPDOWN:指定一个下拉式组合框
       CBS_DROPDOWNLIST:指定一个下拉列表式组合框
       CBS_HASSTRINGS:指定一个含有字符串的自绘式组合框
       CBS_LOWERCASE:将编辑框和列表框中的所有文本都自动转换为小写字符
       CBS_NOINTEGRALHEIGHT:组合框的尺寸由应用程序而不是Windows 指定,通常,由Windows指定尺寸会使列表项的某些部分隐藏起来
       CBS_OEMCONVERT:使编辑框组件中的正文可以在ANSI 字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的
       CBS_OWNERDRAWFIXED:指定自绘式组合框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度
       CBS_OWNERDRAWVARIABLE:指定自绘式组合框,并且列表项有不同的高度
       CBS_SIIMPLE:指定一个简易组合框
       CBS_SORT:自动对列表框组件中的项进行排序
       CBS_UPPERCASE:将编辑框和列表框中的所有文本都自动转换为大写字符
    
       dwStyle参数可以是以上风格的组合。跟其他控件一样,创建时一般也还要指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_VSCROLL等风格。
    
       在对话框模板中直接添加组合框控件时,其属性页中的属性包含了以上风格,例如属性Uppercase设为True就相当于指定了CBS_UPPERCASE风格。
    
       CComboBox类的主要成员函数
    

    因为组合框是由编辑框和列表框组合而成的,所以组合框的操作和编辑框与列表框的操作有很多相似之处,同样的,CComboBox类的成员函数也和CEdit类与CListBox类的成员函数有很多相似之处,不但功能相似,甚至函数名和参数也很相似。下面大概讲解下CComboBox类的主要成员函数,更详细的内容可以参见MSDN。

    int GetCount( ) const;
    获取组合框控件的列表框中列表项的数量。

    int GetCurSel( ) const;
    获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。

    int SetCurSel(int nSelect);
    在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。

    DWORD GetEditSel( ) const;
    获取组合框控件的编辑框中当前选择范围的起始和终止字符的位置。该函数返回一个32位数,低16位存放起始位置,高16位存放选择范围后第一个非选择字符的位置。如果该函数用于下拉列表式组合框时,会返回CB_ERR。

    BOOL SetEditSel(int nStartChar,int nEndChar);
    用于在组合框控件的编辑框中选择字符。nStartChar参数指定起始位置,nEndChar参数指定终止位置。

    DWORD_PTR GetItemData(int nIndex) const;
    获取组合框中指定项所关联的32位数据。nIndex参数指定组合框控件的列表框某项的索引(从0开始)。

    int SetItemData(int nIndex,DWORD_PTR dwItemData);
    为某个指定的组合框列表项设置一个关联的32位数。nIndex参数指定要进行设置的列表项索引。dwItemData参数指定要关联的新值。

    void GetLBText(int nIndex,CString& rString) const;
    从组合框控件的列表框中获取某项的字符串。nIndex参数指定要获取字符串的列表项的索引,CString参数用于接收取到的字符串。

    int GetLBTextLen(int nIndex) const;
    获取组合框控件的列表框中某项的字符串长度。nIndex参数指定要获取字符串长度的列表项的索引。

    int GetTopIndex( ) const;
    获取组合框控件的列表框中第一个可见项的索引。

    int SetTopIndex(int nIndex);
    将组合框控件的列表框中某个指定项设置为可见的。nIndex参数指定了该列表项的索引。该函数成功则返回0,有错误发生则返回CB_ERR。

    BOOL LimitText(int nMaxChars);
    用于限制用户在组合框控件的编辑框中能够输入的最大字节长度。nMaxChars参数指定了用户能够输入文字的最大字节长度,如果为0则长度被限制为65535个字节。

    int AddString(LPCTSTR lpszString);
    为组合框控件中的列表框添加新的列表项。lpszString参数是指向要添加的字符串的指针。该函数的返回值如果大于等于0,那么它就是新列表项的索引,而如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

    int DeleteString(UINT nIndex);
    删除组合框中某指定位置的列表项。nIndex参数指定了要删除的列表项的索引。该函数的返回值如果大于等于0,那么它就是组合框中剩余列表项的数量。如果nIndex指定的索引超出了列表项的数量则返回CB_ERR。

    int FindString(int nStartAfter,LPCTSTR lpszString) const;
    在组合框控件的列表框中查找但不选中第一个包含指定前缀的列表项。nStartAfter参数指定了第一个要查找的列表项之前的那个列表项的索引。lpszString指向包含要查找的前缀的字符串。该函数的返回值如果大于等于0,那么它是匹配列表项的索引,如果查找失败则返回CB_ERR。

    int InsertString(int nIndex,LPCTSTR lpszString);
    向组合框控件的列表框中插入一个列表项。nIndex参数指定了要插入列表项的位置,lpszString参数则指定了要插入的字符串。该函数返回字符串被插入的位置,如果有错误发生则会返回CB_ERR,如果没有足够的内存存放新字符串则返回CB_ERRSPACE。

    int SelectString(int nStartAfter,LPCTSTR lpszString);
    在组合框控件的列表框中查找一个字符串,如果查找到则选中它,并将其显示到编辑框中。参数同FindString。如果字符串被查找到则返回此列表项的索引,如果查找失败则返回CB_ERR,并且当前选择项不改变。

    此外,CComboBox类还继承了CWnd类的成员函数GetWindowText、SetWindowText等。

    CComboBox类应用实例

    最后给大家写一个简单的实例,说明CComboBox的几个成员函数及通知消息等的使用方法。此实例实现的功能:在组合框中包含一个网站列表,切换组合框控件的列表框中选择的列表项时,将新选中的列表项的文本显示到编辑框中。下面是具体实现步骤:

    1. 创建一个基于对话框的MFC工程,名称设置为“ComBoxtest”。

    2. 在自动生成的对话框模板IDD_ComBoxtest_DIALOG中,删除“TODO: Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个Combo Box控件,ID设置为IDC_COMBO,Type属性设为Drop List,为下拉列表式组合框,编辑框不允许用户输入,Sort属性设为False,以取消排序显示。再添加四一个静态文本控件和两个编辑框,静态文本控件的Caption属性分为设置为设为“边缘选择”,“找边宽度”,“阈值“,”mm“,编辑框的ID设为IDC_EDIT1和IDC_EDIT2,Read Only属性设为True。此时的对话框模板如下图:
      这里写图片描述

    3. 为组合框IDC_WEB_COMBO添加CComboBox类型的控件变量m_ComBox1。
      为两个编辑框添加变量,分别为m_EdgeThreshold,m_EdgeWidth。
      并定位6个double类型的变量用于存贮 每条边的找边宽度和阈值。

    //定义每条边的参数;
    double Up_EdgeWidth = 0;   //上边缘找边宽度
    double Up_Threshold = 0;    //上边缘阈值
    
    double Under_EdgeWidth = 0;
    double Under = 0;
    
    double L_EdgeWidth = 0;
    double L_Thresh// CComBoxTestDlg 消息处理程序
    
    BOOL CComBoxTestDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
    
        // 将“关于...”菜单项添加到系统菜单中。
    
        // IDM_ABOUTBOX 必须在系统命令范围内。
        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
        ASSERT(IDM_ABOUTBOX < 0xF000);
    
        CMenu* pSysMenu = GetSystemMenu(FALSE);
        if (pSysMenu != NULL)
        {
            BOOL bNameValid;
            CString strAboutMenu;
            bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
            ASSERT(bNameValid);
            if (!strAboutMenu.IsEmpty())
            {
                pSysMenu->AppendMenu(MF_SEPARATOR);
                pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
            }
        }
    
        // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
        //  执行此操作
        SetIcon(m_hIcon, TRUE);         // 设置大图标
        SetIcon(m_hIcon, FALSE);        // 设置小图标
    
        // TODO: 在此添加额外的初始化代码
        m_ComBox1.AddString(__T("上边缘"));
        m_ComBox1.AddString(__T("左侧边缘"));
        m_ComBox1.AddString(__T("下边缘"));
        m_ComBox1.AddString(__T("右侧边缘"));
    
    
        return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }
    

    5.我们希望在组合框中选中的列表项改变时,将最新的选择项实时显示到编辑框中,那么这就要用到CBN_SELCHANGE通知消息。为列表框IDC_COMBO的通知消息CBN_SELCHANGE添加消息处理函数CComBoxTestDlg::OnCbnSelchangeCombo(),并修改如下:

    /****************************************
    *函 数 名: CComBoxTestDlg::OnCbnSelchangeCombo()
    *描    述: 当选中组合框中的字符串的时候会调用此函数
    *输入参数:无
    *输出参数:无
    *作    者:shirunfa
    ******************************************/
    void CComBoxTestDlg::OnCbnSelchangeCombo()
    {
        // TODO: 在此添加控件通知处理程序代码
        CString strtemp;
        int nsel;
        // 获取组合框控件的列表框中选中项的索引 
        nsel = m_ComBox1.GetCurSel(); 
        //根据索引获取该字符串
        m_ComBox1.GetLBText(nsel,strtemp);
    
        if(strtemp==__T("上边缘"))
        {
            m_EdgeThreshold = Up_Threshold;
            m_EdgeWidth     = Up_EdgeWidth;
        }
        if(strtemp==__T("下边缘"))
        {
            m_EdgeThreshold = Under_EdgeWidth;
            m_EdgeWidth     = Under_EdgeWidth;
        }
        if(strtemp==__T("左侧边缘"))
        {
            m_EdgeThreshold = L_Threshold;
            m_EdgeWidth     = L_EdgeWidth;
        }
        if(strtemp==__T("右侧边缘"))
        {
            m_EdgeThreshold = R_Threshold;
            m_EdgeWidth     = R_EdgeWidth;
        }
        UpdateData(FALSE);
    }

    6.然后给两个编辑框添加消息处理函数,代码如下:

    /****************************************
    *函 数 名: CComBoxTestDlg::OnEnChangeEdit1()
    *描    述: 当选中找边宽度编辑框的时候会调用此函数
    *输入参数:无
    *输出参数:无
    *作    者:shirunfa
    ******************************************/
    void CComBoxTestDlg::OnEnChangeEdit1()
    {
        UpdateData(TRUE);
        //先判断选择哪一条边
        int E_num;
        CString strtemp;
        E_num = m_ComBox1.GetCurSel();
        m_ComBox1.GetLBText(E_num,strtemp);
        if(strtemp == __T("上边缘"))
        {
    
            Up_EdgeWidth = m_EdgeWidth;
        }
        if(strtemp == __T("下边缘"))
        {
    
            Under_EdgeWidth = m_EdgeWidth;
        }
    
        if(strtemp == __T("左侧边缘"))
        {
    
            L_EdgeWidth = m_EdgeWidth;
        }
    
        if(strtemp == __T("右侧边缘"))
        {
    
            R_EdgeWidth = m_EdgeWidth;
        }
    
    }
    
    /****************************************
    *函 数 名: CComBoxTestDlg::OnEnChangeEdit2()
    *描    述: 当选中阈值编辑框的时候会调用此函数
    *输入参数:无
    *输出参数:无
    *作    者:shirunfa
    ******************************************/
    void CComBoxTestDlg::OnEnChangeEdit2()
    {
        UpdateData(TRUE);
        //先判断选择哪一条边
        int E_num;
        CString strtemp;
        E_num = m_ComBox1.GetCurSel();
        m_ComBox1.GetLBText(E_num,strtemp);
        if(strtemp == __T("上边缘"))
        {
            Up_Threshold = m_EdgeThreshold;
    
        }
        if(strtemp == __T("下边缘"))
        {
            Under_EdgeWidth = m_EdgeThreshold;
    
        }
    
        if(strtemp == __T("左侧边缘"))
        {
            L_Threshold = m_EdgeThreshold;
    
        }
    
        if(strtemp == __T("右侧边缘"))
        {
            R_Threshold = m_EdgeThreshold;
    
        }
    }
    

    7.运行程序,弹出结果对话框,在对话框的组合框中改变选择项时,编辑框中的显示会相应改变。效果图如下:
    这里写图片描述

    展开全文
  • MFC之组合框控件Combo Box

    千次阅读 2015-09-01 14:56:36
     组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。  简易组合框中的列表框是一直显示的...
  • 组合框控件(combobox)

    2010-05-06 18:22:00
    组合框把一个编辑框和一个单选择列表框结合在了一起.用户既可以在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。...下拉式组合框同简易式组合框类似,二者的区别在于仅当单击下滚箭头后列表
  • 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直显示的,...
  • //创建一个具有数组定义列表内容的组合框 comboBox1.setSelectedIndex(3);//设置下拉框默认选择项为下拉框模型中第三个变量 comboBox1.setEditable(false);//设置选项不可用 comboBox2=new JComboBox(city...
  • 组合框把一个编辑框和一个单选择列表框结合在了一起.用户既可以在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。组合框分为简易式(Simple combo box)、...下拉式组合框同简易式组合框类似,二者的区别
  • 全排列和组合的区别就在于选择列表上!组合在上一个位置选择过后,不能再往回看,只能将选择列表限制在除了前面遍历过之外的; 而全排列则可以继续从头选起,只要该选择没有选过! 组合 class Solution { public: ...
  •  简易式:包含一个编辑框和一个总是显示的列表框。 下拉组合框同简易式组合框类似,不同之处是单击下拉箭头,是否有下拉框出现。下拉列表式组合框有一个下拉的列表框,但是它编辑框不能用来输入,只能读取。下面...
  • CBN_EDITCHANGEEN_CHANGE的区别

    千次阅读 2018-02-08 09:48:42
    组合框由一个列表框和一个静态控件(或编辑控件)组成。 在这两个类中都有EditChange的控件事件,分别是编辑框的EN_CHANGE事件和CBN_EDITCHANGE事件,这两个事件有所区别,下面逐一介绍。 EN_CHANGE 这个消息.....
  • 控件组件的区别

    2011-10-20 19:53:17
    要说具体一点,就得回顾早期 Windows 历史根源,当时控件指任何子窗口——按钮、列表框、编辑框或者某个对话框中静态文本。从概念上讲,这些窗口——控件——类似用来操作收音机或小电器旋钮按钮。随着...
  • Combox 属性 dropdown droplist的区别

    千次阅读 2012-07-30 16:26:22
    CComboBox控件又称作组合框控件,其有三种形态可供选择,1....下拉列表组合框(Drop-down list).   CComboBox控件常用设置属性说明:   type属性:里面一共有三个选项.就是其三种形式, 我们常用是后两种形态,
  • 文章目录ComboBox组合框列表框的区别图片框控件容器控件可以放置其它很多的控件成果 ComboBox 属性 只支持单选选择。 常用方法 事件 组合框列表框的区别 图片框控件 容器控件 可以放置其它很多的控件 Split...
  • GetLBText()GetWindowText()区别

    千次阅读 2017-07-05 10:31:55
    GetLBText()函数....参数说明:nIndex为列表框中数据索引值, rString 为字符串, 函数说明:把索引号为nIndex数据放到rString变量中. GetLBTextLen(int nIndex)函数就是得到索引号为nIndex中数
  • 随着控件数量增加(组合框、日期时间控件等等),控件逐渐成为子窗口代名词,无论是用在对话框中还是用在其它种类主窗口中。没过多久 BASIC 程序员开始编写他们自己专用控件,自然而然地人们便想到共享...
  • COMBOX最基本解释

    千次阅读 2018-10-17 16:56:52
    combox组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种: 简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 简易组合框中的列表框是一直...
  • 下拉框 ComboBox 使用

    千次阅读 2015-09-30 16:45:18
     组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。  简易组合框中的列表框是一直显示...
  • 回溯算法团灭leetcode组合数 ...事实上,回溯算法深度优先搜索并没有什么太大的区别! 废话不多说,直接来算法框架: res = []; void backtrace(路径, 选择列表){ if (path满足要求){ res.push_back(path);

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 188
精华内容 75
关键字:

列表框和组合框的区别