转自:http://www.gymsaga.com/mfc/419.html
先介绍基本ComboBox:
|
风格 |
列表框何时可见 |
静态控件还是编辑控件 |
|
Simple |
包括下拉框一直可见 |
编辑控件 |
|
Drop-down | 可编辑 下拉框 点击可见 |
编辑控件 |
|
Drop-downlist | 不可编辑 下拉框 点击可见 |
静态控件 |
常见函数:
int AddString( LPCTSTR lpszString );
返回值大于等于0时,是列表中项的下标。出错时,返回CB_ERROR,没有足够的空间存放新的字符串时返回CB_ERRSPACE。此外只有在组合框不是CBS_SORT风格的时候,才能在最后面挨个插入,否则会根据排列规则进行列表的排列
int InsertString( int nIndex, LPCTSTR lpszString );
返回值返回插入项的下标。出错时返回CD_ERR。如果没有足够的内存插入项,则返回CB_ERRSPACE。此外,它不会引起CBS_SORT风格的列表重新排序。
int DeleteString( UINT nIndex );
返回值:大于等于0时,是列表中剩下的字符串的个数。如果nIndex指定的下标大于列表中项的总数,则返回CB_ERROR。
int SetCurSel( int nSelect );
设置选择相应列表项。必要时列表框会滚动,以使该字符串在列表的可视区内(列表是可见的时)。编辑控件中的文本将相应地变为选中的字符串。此前在列表框中的选择将不复存在。
nt GetCurSel( ) const;
返回值:返回组合框中列表框中当前选中的项的下标。如果没有选中项,则返回CB_ERR。
int GetCount( ) const;
返回值:返回项的个数。该值比最后一项的下标要大1(因为下标是从0开始计算的)。出错时返回CB_ERR。
SetItemData,GetItemData,SetItemDataPtr,GetDataItemPtr的用法
SetItemData给组合框中某个项设置一个32位的值。GetItemData当然就是获取这个值了
SetItemDataPtr,GetDataItemPtr来设置复杂数据 ,比如结构体之类的。Clear函数不是ResetContent函数
刚才也看到了,ResetContent函数能把所有数据包括Edit显示的内容全部清空了,但是Clear只是删除组合框的编辑控件的当前选择(如果有的话)。不要混淆
int SetItemHeight( int nIndex, UINT cyItemHeight );
返回值:如果下标或高度值无效,则返回CB_ERR。否则为0。
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 |
组合框获得输入焦点。 |
不管是Unicode编程还是Ansi编程,字符串转换成整形,虽然_atoi()有时候可以满足你的需要,但是很多时候他不是一个很好的选择,如果你准备使用 Unicode 字符,你应该用_ttoi(),它在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi()。
。
2256

被折叠的 条评论
为什么被折叠?



