CComboBox类的成员 构造函数 CcomboBox构造一个CComboBox对象 初始化函数 Create创建一个组合框并应用到CComboBox对象上 InitStorage预先为组合框的列表框中的项和字符串分配内存 通用操作 GetCount取得组合框的列表框中项的个数 GetCurSel取得组合框的列表框中当前选中项(如果有的话)的下标 SetCurSel在组合框的列表框中选择一个字符串 GetEditSel取得组合框的编辑控件中当前选项的起止字符位置 SetEditSel选中组合框的编辑控件中的字符 SetItemData设置组合框中指定项的32位值 SetItemDataPtr把组合框中指定项的32位值设置成一个指定的void型指针 GetItemData检索应用为组合框的项提供的32位值 GetItemDataPtr检索应用为组合框的项提供的32位值,返回一个void型指针 GetTopIndex返回组合框中列表框的第一个可见项的下标 SetTopIndex让组合框的列表框显示指定下标所在的项 SetHorizontalExtent设置组合框中列表框的水平宽度(以像素为单位),如果列表超过该宽度,将需要用滚动条 GetHorizontalExtent返回组合框中列表框的水平宽度(以像素为单位) SetDroppedWidth设置组合框中下拉列表允许的最小宽度 GetDroppedWidth返回组合框中下拉列表允许的最小宽度 Clear删除编辑控件中的当前选择(如果有的话) Copy以CF_TEXT格式拷贝编辑控件中的当前选择(如果有的话)到剪贴板 Cut删除编辑控件中的选择项(如果有的话),并把删除的内容以CF_TEXT格式拷贝到剪贴板 Paste在编辑控件中的当前位置粘贴剪贴板中的内容。仅当剪贴板中的数据是CF_TEXT格式的才会真正插入 LimitText设置用户可以在组合框的编辑控件中输入的文本的最大长度 SetItemHeight设置组合宽中列表框的项的高度或编辑控件(或静态控件)中文本的高度 GetItemHeight取得组合框中列表项的高度 GetLBText从组合框的列表框中取得一个字符串 GetLBTextLen取得组合框的列表框中某个字符串的长度 ShowDropDown显示或者隐藏风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框的列表框 GetDroppedCont-rolRect取得组合框中可见(已经下拉)的列表框的屏幕坐标 GetDroppedState检测组合框的列表框是否可见(是否已经下拉) SetExtendedUI选择风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框中的列表框的缺省用户接口或扩展用户接口 GetExtendedUI检测组合框的用户接口是缺省的还是扩展的 GetLocate取得组合框的定位标记 SetLocate设置组合框的定位标记 字符串操作 AddString在组合框的列表框的列表末尾添加一个字符串,或在具有CBS_ SORT风格的的列表框中按次序所在的位置插入一个字符串 DeleteString删除组合框中的列表框中的一个字符串 InsertString在组合框的列表框中插入一个字符串 ResetContent删除组合框的列表框和编辑控件中的所有项Dir在组合框的列表框中添加文件名的列表 FindString在组合框的列表框中查找具有指定前缀的第一个字符串 FindStringExact在组合框的列表框中查找具有与指定字符串完全匹配的第一个字符串 SelectString在组合框的列表框中查找字符串,找到后选中它,并把它拷贝到编辑控件中 可覆盖的函数 DrawItem当自定义的组合框的某个可视特性改变时,由主程序调用 MeasureItem当创建一个自定义的组合框时,由主程序调用以检测组合框的维数 CompareItem由主程序调用以检测在有序的自定义组合框中新项所在的位置 DeleteItem从自定义的组合框中删除一个列表项时,由主程序调用 成员函数 CComboBox::AddString int AddString( LPCTSTR lpszString ); 返回值 返回值大于等于0时,是列表中项的下标。出错时,返回CB_ERROR,没有足够的空间存放新的字符串时返回CB_ERRSPACE。 参数 lpszString指向将要添加的字符串(以null结尾)的指针。 说明 本函数在组合框中的列表框中添加一个字符串。如果列表框的风格不是CBS_SORT的,则在列表的末尾添加该字符串。否则,该字符串按照排序的次序插入到列表中。在列表的指定位置插入一项,需使用成员函数InsertString。 请参阅 CComboBox::InsertString,CComboBox::DeleteString,CB_ADDSTRING CComboBox:: CComboBox CComboBox( ); 说明 本函数构造一个CComboBox对象。 请参阅 CComboBox::Create CComboBox::Clear void Clear( ); 说明 删除组合框的编辑控件的当前选择(如果有的话)。要想删除当前的选择并把它放到剪贴板中,请使用成员函数Cut。 请参阅 CComboBox::Copy, CComboBox::Cut, CComboBox::Paste,WM_CLEAR CComboBox::CompareItem virtual int CompareItem( LPCOMPAREITEMSTRUCT lpCompareItemStruct ); 返回值 返回LPCOMPAREITEMSTRUCT结构中描述的两个项的相对位置。可能的取值为: 返回值 含义 -1 项1排在项2之前 0 项1与项2排在同一位置 1 项1排在项2之后 有关结构LPCOMPAREITEMSTRUCT的说明, 请参阅CWnd::OnCompareItem。 参数 lpCompareItemStruct指向一个LPCOMPAREITEMSTRUCT结构的长指针。 说明 本函数由框架调用,可取得排序的自定义组合框中列表框中某个新项的相对位置。缺省时,此函数什么也不做。如果用LBS_SORT风格建立了一个自定义的组合框,就必须覆盖此函数来处理对新加入到列表的项的排序。 请参阅 WM_COMPAREITEM, CComboBox::DrawItem, CComboBox::MeasureItem, CComboBox::DeleteItem CComboBox::Copy void Copy( ); 说明 把组合框中编辑控件中的选择项(如果有的话)以CF_TEXT格式拷贝到剪贴板。 请参阅 CComboBox::Clear, CComboBox::Cut, CComboBox::Paste,WM_COPY CComboBox::Create BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,UINT nID ); 返回值 调用成功时,返回非零值,否则为0。 参数 dwStyle指定组合框的风格。可在组合框上应用各种组合框风格的组合。 rect设置组合框的位置和大小。可以是RECT结构或CRect对象。 pParentWnd指定组合框所在的父窗口(通常是CDialog类型的)。不能为NULL。 nID指定组合框的控制ID号。 说明 构造一个CComboBox对象需要两步:首先调用构造函数,然后调用Create创建Windows组合框并与该CComboBox对象相联系。在执行Create时,Windows向组合框发送以下消息:WM_NCCREATE、WM_CREATE、WM_NCCALCSIZE和WM_GETMINMAXINFO。缺省时,这些消息分别由基类CWnd的成员函数OnNcCreate、OnCreate、OnNcCaclSize和OnGetMinMaxInfo处理。要扩展缺省的消息处理功能,可以在CComboBox的派生类中加入一个消息映射并覆盖这些消息处理函数。例如,可以覆盖函数OnCreate进行新类的初始化工作。组合框控件上可用的窗口风格有: WS_CHILD 总是设置 WS_VISIBLE 通常要设置 WS_DISABLED 很少使用 WS_VSCROLL 增加一个垂直滚动条 WS_HSCROLL 增加一个水平滚动条 WS_GROUP 用来成组控件 WS_TABSTOP 组合框按制表键次序排列 请参阅 CComboBox:: CComboBox, Combo-Box Styles CComboBox::Cut void Cut( ); 说明 本函数删除组合框中编辑控件中当前选中的内容(如果有的话),然后以CF_TEXT格式拷贝到剪贴板。如果仅仅删除组合框中编辑控件中当前选中的内容而不拷贝到剪贴板中,可调用成员函数Clear。 请参阅 CComboBox::Clear, CComboBox::Copy, CComboBox::Paste,WM_CUT CComboBox::DeleteItem virtual void DeleteItem( LPDELTEITEMSTRUCT lpDeleteItemStruct ); 参数 lpDeleteItemStruct指向一个Windows DELTEITEMSTRUCT结构的长指针,该结构中记录了被删除的项的信息。有关此结构的描述,请参阅CWnd::OnDeleteItem。 说明 本函数在用户在自定义的组合框中删除一个项或撤消组合框时,由框架调用。缺省的实现什么都不做。需要时可以覆盖此函数重绘组合框。 请参阅 CComboBox::CompareItem, CComboBox::DrawItem, CComboBox::MeasureItem, WM_DELETEITEM CComboBox::DeleteString int DeleteString( UINT nIndex ); 返回值 大于等于0时,是列表中剩下的字符串的个数。如果nIndex指定的下标大于列表中项的总数,则返回CB_ERROR。 参数 nIndex指定待删除的字符串的下标。 说明 本函数删除组合框的列表中的一个字符串。 请参阅 CComboBox::InsertString, CComboBox::AddString,CB_DELETESTRING CComboBox::Dir int Dir( UINT attr, LPCTSTR lpszWildCard ); 返回值 大于等于0时,是添加到列表最后的文件名的下标。出错时返回CB_ERROR;没有足够的空间存放新的字符串时返回CB_ERRSPACE。 参数 attr可以是Cfile::GetStatus中定义的枚举值的组合或以下值的组合: DDL_READWRITE 文件可以读写。 DDL_READONLY 文件只读。 DDL_HIDDEN隐藏文件,在目录列表中看不到。 DDL_SYSTEM系统文件。 DDL_DIRECTORYlpszWildCard指定的名字是一个目录。 DDL_ARCHIVE档案文件。 DDL_DRIVES 包括所有匹配lpszWildCard指定的名字的驱动器。 DDL_EXCLUSIVE 独占标志。如果置了独占标志,则只列出指定的文件;否则指定的文件在正常文件之后与之一起列出。 lpszWildCard指向一个指定文件名的字符串。字符串中可以包括通配符(例如*.*)。 说明 在组合框的列表中增添文件名的列表或者驱动器列表。 CComboBox::DrawItem virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ); 参数 lpDrawItemStruct指向一个LPDRAWITEMSTRUCT结构的指针,结构中包含了有关项的绘制的信息。 说明 本函数在自定义的组合框的某个可视属性发生改变时由框架调用。结构DRAWITEMSTRUCT中的成员itemAction指明了要进行的绘制动作。缺省时,此函数什么也不做。可以覆盖此函数以实现对自定义组合框的绘制。在此成员函数终止之前,应用必须重设置所有为lpDrawItemStruct中的显示上下文选中的GDI对象。 请参阅 CComboBox::CompareItem, WM_DRAWITEM, CComboBox::MeasureItem, CComboBox::DeleteItem, CComboBox::FindString int FinsString( int nStartAfter, LPCTSTR lpszString )const; 返回值 大于等于0时,是找到的匹配字符串的下标。查找未命中时返回CB_ERR。 参数 nStartAfter指定了查找开始的下标。当查到列表的结尾处时,又继续找到它标志的位置。如果设为-1,则从列表的开始处开始查找匹配的串。 lpszString指向一个以null结尾的字符串,该字符串就是待查找的匹配前缀。查找过程是不区分大小写的。 说明 查找组合框的列表中匹配指定前缀的第一个字符串,但不把它选为当前项。 请参阅 CComboBox::SelectString,CComboBox::SetCursel,CB_FINDSTRING CComboBox::FindStringExact int FindStringExact( int nIndexStart, LPCTSTR lpszFind ) const; 返回值 返回匹配的项的下标。未查找到匹配串时返回CB_ERR。 参数 nIndexStart指定了查找开始的下标。当查到列表的结尾处时,又继续找到它标志的位置。如果设为-1,则从列表的开始处开始查找匹配的串。 lpszFind指向一个以null结尾的字符串,该字符串中可以包括完整的文件名(包括扩展名)。查找过程是不区分大小写的。 说明 本函数用于查找组合框的列表中匹配指定字符串的第一个项,但不把它选为当前项。如果组合框是自定义的,但未设置CBS_HASSTRING风格,FindStringExact会试图匹配双字值。 请参阅 CComboBox::FindString, CB_FINDSTRINGEXACT CComboBox::GetCount int GetCount( ) const; 返回值 返回项的个数。该值比最后一项的下标要大1(因为下标是从0开始计算的)。出错时返回CB_ERR。 说明 本函数用于取得组合框中列表框中项的个数。 请参阅 CB_GETCOUNT CComboBox::GetCurSel int GetCursor( ) const; 返回值 返回组合框中列表框中当前选中的项的下标。如果没有选中项,则返回CB_ERR。 说明 本函数用于取得组合框中当前选中的项的下标。 请参阅 CComboBox::SetCurSel, CB_GETCURSEL CComboBox::GetDroppedControlRect void GetDroppedControlRect( LPRECT lprect ) const; 参数 lprect指向RECT结构的一个指针,该结构用于接收取得的坐标。 说明 本函数用于取得下拉组合框中可见(已经下拉)的列表框的屏幕坐标。 请参阅 CB_GETDROPPEDCONTROLRECT CComboBox::GetDroppedState BOOL GetDroppedState( ) const; 返回值 列表框可见时返回非零值,否则为0。 说明 本函数用于判断下拉组合框的列表框是否可见(是否已经下拉)。 请参阅 CB_SHOWDROPDOWN, CB_GETDROPPEDSTATE CComboBox::GetDroppedWidth int GetDroppedWidth( ) const; 返回值 调用成功时,返回允许的最小宽度,否则返回CB_ERR。 说明 本函数用于取得组合框中的列表框所允许的最小宽度(以像素为单位)。它只对风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框有效。缺省时,下拉列表框允许的最小宽度为0。可以调用函数SetDroppedWidth来设置这个值。当组合框的列表框部分显示时,它的宽度是二者中大的那个或组合框的宽度。 请参阅 CComboBox::SetDroppedWidth, CB_GETDROPPEDWIDTH CComboBox::GetEditSel DWORD GetEditSel( ) const; 返回值 返回一个32位的值。低字记录了编辑控件中选中的字符串中起始位置,高字记录了紧接着选中的字符串的第一个字符的位置。如果组合框上没有编辑控件,则返回CB_ERR。 说明 本函数取得组合框的编辑控件中当前被选中的字符串的起止位置。 请参阅 CComboBox::SetEditSel, CB_GETEDITSEL CComboBox::GetExtendedUI BOOL GetExtendedUI( ) const; 返回值 如果组合框有扩展的用户接口,则返回非零值,否则为0。 说明 调用GetExtendedUI成员函数,确定组合框是具有缺省用户界面,还是扩展的用户界面。扩展的用户界面可用下列方法指定: 单击组合框的静态控件(只适用于CBS_DROPDOWNLIST风格的组合框)。 按向下的箭头以显示列表框(功能键F4被禁止了)。当项的列表不可见时,是不能在静态控件中滚动的(箭头键被禁止了)。 请参阅 CComboBox::SetExtendedUI, CB_GETEXTENDEDUI CComboBox::GetHorizontalExtent UINT GetHorizontalExtent( ) const; 返回值 返回组合框中列表框的可滚动部分的宽度(以像素为单位)。 说明 本函数取得组合框中列表框的可水平滚动部分的宽度。仅当组合框的列表框有水平滚动条时有效。 请参阅 CListBox::SetHorizontalExtent,CB_GETHORIZONTALEXTENT CComboBox::GetItemData DWORD GetItemData( int nIndex ) const; 返回值 返回项上的32位值。出错时返回CB_ERR。 参数 nIndex组合框中列表框的某个项的下标。 说明 本函数返回组合框中指定项上由应用提供的一个32位值。此值可以用成员函数SetItemData的dwItemData参数进行设置。如果检索的是一个32位的指针,请用函数GetItemDataPtr。 请参阅 CComboBox::SetItemData, CComboBox::GetItemDataPtr, CComboBox::SetItemDataPtr, CB_GETITEMDATA CComboBox::GetItemDataPtr void* GetDataItemPtr( int nIndex ) const; 返回值 调用成功时返回一个指针,否则返回-1。 参数 nIndex组合框的列表框中某个项的下标。 说明 本函数取得组合框中指定项的一个32位值(由应用提供),类型为void*。 请参阅 CComboBox::SetItemDataPtr, CComboBox::GetItemData, CComboBox::SetItemData, CB_GETITEMDATA CComboBox::GetItemHeight int GetItemHeight( int nIndex ) const; 返回值 返回组合框中指定项的高度(以像素为单位)。出错时返回CB_ERR。 参数 nIndex指定组合框中待查找高度的组件的下标。如果为-1,则检索组合框中编辑控件(或静态控件)的高度。如果组合框的风格为CBS_OWNERDRAWVARI-ABLE,nIndex就指定了要检索的列表项的下标。否则nIndex被设为0。 说明 本函数用于取得组合框中列表项的高度。 请参阅 CComboBox::SetItemHeight, WM_MEASUREITEM, CB_GETITEMHEIGHT CComboBox::GetLBText int GetLBText( int nIndex, LPTSTR lpszText ) const; void GetLBText(int nIndex, CString& rString ) const; 返回值 返回字符串的字节数,不包括终结符null。如果nIndex指定的值无效,则返回CB_ERR。 参数 nIndex指明列表框中待拷贝的字符串的下标。 lpszText指向接收字符串的缓冲。缓冲必须能够容纳下待拷贝的字符串及其终结符null。rString对CString对象的一个参考。 说明 本函数用于从组合框的列表中拷贝一个字符串。第二种实现方式用拷贝来的文本填充一个CString对象。 请参阅 CComboBox::GetLBTextLen, CB_GETLBTEXTLEN CComboBox::GetLBTextLen int GetLBTextLen( int nIndex ) const 返回值 返回字符串的长度(字节数)。不包括终结符null。如果nIndex指定的值无效,则返回CB_ERR。 参数 nIndex指明列表框中待拷贝的字符串的下标。说明本函数取得组合框的列表中某个字符串的长度。 请参阅 CComboBox::GetLBText, CB_GETLBTEXTLEN CComboBox::GetLocale LCID GetLocale( ) const; 返回值 返回组合框中字符串的定位标志值(LCID)。 说明 本函数取得组合框中的定位标志。例如,定位标志用来决定排序的组合框中字符串的排序次序。 请参阅 CComboBox::SetLocale, ::GetStringTypeW, ::GetSystemDefaultLCID, ::GetUserDefaultLCID CComboBox::GetTopIndex int GetTopIndex( ) cosnt; 返回值 调用成功时返回组合框的列表中的第一个可见的项的下标,否则返回CB_ERR。说明本函数取得组合框的列表中的第一个可见的项的下标。开始时,下标为0的项是第一个可见的项,但在滚动列表后就不一定了。 请参阅 CComboBox::SetTopIndex,CB_GETTOPINDEX CComboBox::InitStorage int InitStorage( int nItems, UINT nBytes ); 返回值 调用成功时,返回不需要进行内存重分配时组合框中的列表就可容纳的项的个数。否则返回CB_ERR告知内存不足。 参数 nItems指定要添加的项的个数。 nBytes指定需要增加的内存的字节数。 说明 本函数为组合框的列表的项分配内存。在组合框的列表中添加很多项之前最好调用本函数。只用于Windos 95:参数wParam被限制为16位。因此列表框中的项最多不能超过32767个。每个项的大小仅受可用内存的限制。本函数有助于加快有很多项的列表框的初始化(如超过100项)。它预先为待添加的项分配内存,随后调用AddString、InsertString和Dir函数就不再动态分配内存,这样就节约了时间。但是列表中的项的个数需要预先估计,如果估计得多了,就会浪费一部分内存;估计得少了,此后再添加项就需要动态申请内存。 请参阅 CComboBox:: CComboBox, CComboBox::Create, CComboBox::ResetContent, CB_INITSTORAGE CComboBox::InsertString int InsertString( int nIndex, LPCTSTR lpszString ); 返回值 返回插入项的下标。出错时返回CD_ERR。如果没有足够的内存插入项,则返回CB_ERRSPACE。 参数 nIndex指定项的插入位置(下标),如果为―1,则在列表的末尾插入该项。 lpszString指向待插入的字符串(以null结尾)。 说明 本函数在组合框的列表框中插入一个字符串。与成员函数AddString不同,它不会引起CBS_SORT风格的列表重新排序。 请参阅 CComboBox::AddString, CComboBox::SeleteString, CcomboBox::ResetContent, CB_INSERTSTRING CComboBox::LimitText BOOL Limittext( int nMaxChars ); 返回值 调用成功时返回非零值。对于风格为CBS_DROPDOWNLIST的组合框或一个没有编辑控件的组合框,此函数返回CB_ERR。 参数 nMaxChars指定用户可以输入的文本的最大长度(字节数)。如果为0,文本的最大长度为65,535字节。 说明 本函数设置用户可以在组合框的编辑控件中输入的文本的最大长度。如组合框的风格不是CBS_AOTUSCROLL,把文本的最大长度设得比编辑控件的大小更大是不起作用的。本函数只限制用户输入文本的最大长度。对那些在调用它之前已经在编辑控件中的文本没有影响,对那些从列表中选中然后被拷贝到编辑控件中的文本也不起作用。 CComboBox::MeasureItem virtual void MeasureItem( LPMEASUREITEMSTRUCTlpMeasureItemStruct |
|