CComboBox

类CComboBox封装了Windows组合框。组合框由一个列表框和一个静态控件(或编辑控件)组成。列表框部分可以是一直显示的,也可以是隐藏的,在用户单击编辑控件边上的按钮(下拉箭头)时下拉该列表框。列表框中当前选中的项(如果有的话)显示在静态控件或编辑控件中。如果组合框带有下拉风格,则当用户在编辑框中输入列表项的开始字符时,对应项(如果有的话)中的第一个将会加亮显示。

    下表列出了组合框的三种风格:风格 列表框何时可见 静态控件还是编辑控件 
    Simple 总是可见 编辑控件 
    Drop-down 当用户单击控件边上的下拉箭头时 编辑控件 
    Drop-downlist 当用户单击控件边上的下拉箭头时 静态控件 

  可以从对话框模板中建立一个CComboBox对象,也可以直接在代码中创建。无论采用哪种方法,都要先调用CComboBox的构造函数构造一个CComboBox对象,然后调用成员函数Create创建控件并在CComboBox对象上应用它。
  消息映射入口的格式如下:
  ON_Notification( id, memberFxn )
  其中id指定了发送通知的组合框控件的子窗口ID,而memberFxn是用于处理该通知的父成员函数的名字。
  父窗口的函数原型的格式如下:
  afx_msg void memberFxn( );
  通知发送的次序是不能预先确定的。例如,通知CBN_SELCHANGE既可能在CBN_CLOSEUP之前也可能在它之后出现。
  可能的消息映射入口如下:
· ON_CBN_CLOSEUP (Windows 3.1及更高版本)组合框的列表已被关闭。对于风格为CBS_SIMPLE的组合框来说,不会发送该通知消息。 
· ON_CBN_DBCLICK 用户双击了列表框中的一个字符串。只对风格为CBS_SIMPLE的组合框发送。对于风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框来说,不会出现双击的消息,因为一次单击就会使下拉列表隐藏或显示了。 
· ON_CBN_DROPDOWN 下拉出下拉列表(变为可见)。只对风格为CBS_DROPDOWN或CBS_DROPDOWNLIST的组合框起作用。 
· ON_CBN_EDITCHANGE 用户发出了一个可能改变编辑控件中文本的动作。与消息CBN_EDITUPDATE不同,本消息是在Windows刷新屏幕之后发出的。风格为CBS_DROPDOWNLIST的组合框没有该通知。 
· ON_CBN_EDITUPDATE 编辑控件部分将显示变化了的文本。本通知消息在控件已经格式化了文本但没有显示时发送。风格为CBS_DROPDOWNLIST的组合框没有该通知。 
· ON_CBN_ERRSPACE 不能为组合框分配足够的内存进行响应某个请求。 
· ON_CBN_SELENDCANCEL (Wndows 3.1及更高版本)表明用户的选择将被忽略。用户在单击了一个项之后,又单击了另外一个窗口或控件隐藏了组合框的下拉列表。此通知消息在CBN_CLOSEUP消息之前发送,以表明用户的选择将被忽略。即使没有发送CBN_CLOSEUP通知消息,也会发送CBN_SELENDCANCEL或CBN_SELENDOK消息(例如风格为CBS_SIMPLE的组合框)。 
· ON_CBN_SELENDOK 用户在选择了一项以后,要么按了ENTER键,要么按了向下箭头键,从而隐藏了组合框的列表。此通知消息在CBN_CLOSEUP之前发送,表明用户的选择将不被认为是有效的。即使没有发送CBN_CLOSEUP通知消息,也会发送CBN_SELENDCANCEL或CBN_SEL-ENDOK消息(例如风格为CBS_SIMPLE的组合框)。 
· ON_CBN_KILLFOCUS 组合框将失去输入焦点。 
· ON_CBN_SELCHANGE 用户在列表中单击或者利用箭头键选择了另一个项,从而引起了选中项的改变。在处理此消息时,编辑控件中的文本只能通过GetLBText或者类似的某个函数存取。不能使用GetWindowText函数。 
· ON_CBN_SETFOCUS 组合框获得输入焦点。 
如果在对话框中创建了一个CComboBox对象,在关闭对话框时该CComboBox对象将自动撤消。
  如果在另外一个窗口对象中嵌入了一个CComboBox对象,不需要显式地撤消它。如果在堆栈中创建了一个CComboBox对象,它也会被自动地撤消。如果采用new在内存堆中创建了一个CComboBox对象,则必须调用delete来撤消它。
 
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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值