zoukankan      html  css  js  c++  java
  • ComboBox控件

     

    一、怎样加入/删除Combo Box内容
    1,在Combo Box控件属性的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;
    int iCount=((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,二、属性里有个 No integral height 钩选项,表示最大长度为设计长度,假设实际内容比设计长度多,就出现滚动栏,少就以实际长度显示。

     

    三、选择当中的某行
    1,选中:
    int iPos=((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 的焦点不同,由于它是由edit和listbox两部分组成的

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

    控制Combo Box的下拉长度
    1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。
    二、属性里有个 No integral height 钩选项,表示最大长度为设计长度,假设实际内容比设计长度多,就出现滚动栏,少就以实际长度显示。

    VC++ Combo Box/Combo Box Ex控件
    组合窗体是由一个输入框和一个列表框组成。创建一个组合窗体能够使用成员函数:
    BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
    当中dwStyle将指明该窗体的风格,除了子窗体经常使用的风格WS_CHILD,WS_VISIBLE外,你能够针对列表控件指明专门的风格。
    CBS_DROPDOWN 下拉式组合框
    CBS_DROPDOWNLIST 下拉式组合框,可是输入框内不能进行输入
    CBS_SIMPLE 输入框和列表框同一时候被显示
    LBS_SORT 全部的行依照字母顺序进行排序

    因为组合框内包括了列表框,所以列表框的功能都能够使用,如能够利用:
    int AddString( LPCTSTR lpszItem )加入行,
    int DeleteString( UINT nIndex )删除指定行,
    int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。
    void ResetContent( )能够删除列表框中全部行。
    通过调用int GetCount( )得到当前列表框中行的数量。

    假设须要得到/设置当前被选中的行的位置,能够调用int GetCurSel( )/int SetCurSel(int iIndex)。通过调用int GetLBText( int nIndex, LPTSTR lpszText )得到列表框内指定行的字符串。

    此外通过调用int FindString( int nStartAfter, LPCTSTR lpszItem )能够在当前全部行中查找指定的字符传的位置,nStartAfter指明从那一行開始进行查找。
    int SelectString( int nStartAfter, LPCTSTR lpszItem )能够选中包括指定字符串的行。

    此外输入框的功能都能够使用,如能够利用:
    DWORD GetEditSel( ) /BOOL SetEditSel( int nStartChar, int nEndChar )得到或设置输入框中被选中的字符位置。

    BOOL LimitText( 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,然后调用
    int InsertItem( const COMBOBOXEXITEM* pCBItem );来加入行,当中COMBOBOXEXITEM定义例如以下:
    typedef struct {
    UINT mask;
    int iItem;
    LPTSTR pszText;
    int cchTextMax;
    int iImage;
    int iSelectedImage;
    int iOverlay;
    int iIndent;
    LPARAM lParam;
    } COMBOBOXEXITEM, *PCOMBOBOXEXITEM;
    你须要设置mask=CBEIF_IMAGE CBEIF_TEXT,并设置iItem为插入位置,设置pszText为显示字符串,设置iImage为显示的图标索引。以下的代码演示了怎样进行插入:

    /*m_cbeWnd 为已经创建的CComboBox对象
    m_list 为CImageList对象IDB_IMG 为16*(16*4)的位图,每一个图片为16*16共4个图标*/
    m_list.Create(IDB_IMG,16,4,RGB(0,0,0));
    m_cbeWnd.SetImageList(&m_list);
    COMBOBOXEXITEM insItem;insItem.mask=CBEIF_IMAGE CBEIF_TEXT;insItem.iItem=0; insItem.iImage=0;insItem.pszText="Line 1";m_cbeWnd.InsertItem(&insItem);insItem.iItem=1;insItem.iImage=1;insItem.pszText="Line 2";m_cbeWnd.InsertItem(&insItem);
    通过调用int DeleteItem( int iIndex );来删除行,并指明行的位置。
    通过调用BOOL GetItem( COMBOBOXEXITEM* pCBItem )/BOOL SetItem( const COMBOBOXEXITEM* pCBItem );来得到/设置行数据。
     
    五、怎样让CComboBox(组合框)控件显示默认值?
     
    在初始化的时候加上m_constants_combo.SetCurSel(4);
    或者
    在class   wizard里面连到一个变量。
     
  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4078996.html
Copyright © 2011-2022 走看看