vc6.0 combo box控件- Vincent Zhang的日志- 网易博客

vc6.0 combo box控件

2010-03-04 20:20:09 阅读15 评论0 字号:

 

vc6.0 combo box控件 

 ComboBox

  由于接触VC时间不长,对VC中控件的用法也不是很了解,用到时在网上查了很多,现总结如下:

  1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小

  2、如果 ComboBox 的 Sort 属性设置为 true,

  则新添加项将按字母顺序插入到列表中。

  否则,在列表的结尾处插入项。

  3、要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去)!

  响应他的哪个消息比较好?

  如果是只能选择的响应ON_CBN_SELCHANGE

  如果是可以编辑的,那么要立刻响应编辑就是ON_CBN_EDITCHANGE

  4、CBN_SELENDOK是什么作用?

  This notification message is sent when the user clicks a list item,

  or selects an item and then closes the list.

  It indicates the user's selection is to be processed

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

  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会自动列出相关的消息,并能自动产生消息映射代码。

  6、改变ComboBox的下拉列表框宽度

  一般情况下,列表框的宽度和选择框是一样宽的,为了让列表框变的更宽,可以用

  m_Combobox.setdroppedwidth(int width); 来调整 他的宽度

  7、如何使控键ComboBox不能输入只能在下拉菜单中选择?

  VC6中style属性设为csDropDownList

  VC2005中Type属性设为Drop List

  8、设置当前项或得到当前是第几项

  m_ComboBox1.SetCurSel(N); //SetCurSel函数可改变标签控件当前选定的项目

  //这个N可以是-1,表示无选择,0表示{dy}项,1表示第二项。。

  m_ComboBox1.GetCurSel(); //得到当前是第几项.0是{dy}项,1是第二项

 

添加控件时,鼠标点击的窗口必须足够大,这样才能显示您的list

 1.为combo box添加选项,在编辑状态下选combo box控件的属性,选Data标签,在编辑框中添加选项,按Ctrl-Enter来添加下一个选项,

2.消息响应命令

(1)选中:

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

 

(2)设置初始化显示内容,在OnInitDialog()函数中添加

    //////////////////////////////////////////////////////////////////////////

    //初始化,,从0开始

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

    //////////////////////////////////////////////////////////////////////////

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

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

CString strTemp;

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

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

{

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

   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp); //为控件添加初始化数据

}

(3)删除

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

(4)插入

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

(5)查找

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

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

///////////////////////////////////////////////////////////////////////////////////

 

控制Combo Box的下拉长度

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

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

取得Combo Box框内容

(1)取当前内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);//将获取的值存放到CString类型变量strTemp中。

如果定义了关联的变量,例如m_combo,可以直接获取:m_combo->GetWindowText(strTemp);

(2)取其他行内容

((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp); //其中n为从0开始的索引值

获取当前选择的行数

例如:((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel()返回的是当前选中值的行数,是整型。

或者:UINT m_row = m_combo->GetCurSel()

获得焦点

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

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

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

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

 

<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【vc6.0 combo box控件- Vincent Zhang的日志- 网易博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——