1.选择和检索项
(1)SetCurSel
: 设置当前选中的项。
参数:SetCurSel
接受一个整数参数,表示要选择的项的索引(从 0 开始)。如果传递 -1
,则取消选择所有项。
返回值:此函数返回 CB_ERR
如果索引无效,否则返回索引值。
索引有效性:在调用 SetCurSel
之前,请确保提供的索引是有效的。如果索引超出了组合框中现有项的范围,将不会选中任何项。
使用场景:这个方法通常用于初始化对话框时预先选择一个项,或者根据程序逻辑或用户输入选择一个特定的项。
(2)GetCurSel
: 获取当前选中项的索引。
返回值:如果有选中项,GetCurSel
返回选中项的索引(从 0 开始计数)。如果没有项被选中,它将返回 CB_ERR
。
使用场景:这个方法常用于响应用户操作,如在用户选择组合框中的项后执行某些操作。
(3)GetLBText
: 获取指定索引项的文本。
参数:GetLBText
需要两个参数。第一个是要检索文本的项的索引,第二个是一个引用或指针,指向一个 CString
对象,用于接收检索到的文本。
返回值:如果成功,GetLBText
不返回特定值,但是传入的 CString
对象将被填充。如果失败,比如索引无效,CString
对象可能不会被修改。
索引有效性:在调用 GetLBText
之前,请确保提供的索引是有效的。可以通过 GetCurSel
或其他方法获取有效的索引。
(4)GetLBTextLen
: 获取指定索引项文本的长度。
返回值:GetLBTextLen
返回指定索引项的文本长度(不包括结尾的 null 字符)。如果指定的索引无效,它将返回 CB_ERR
。
索引有效性:在调用 GetLBTextLen
之前,确保提供的索引是有效的。通常,这是通过 GetCurSel
或类似方法获取的。
使用场景:这个方法在需要精确分配缓冲区以获取组合框项文本时非常有用。
(5)FindString
: 查找包含指定字符串的第一个项。
参数:FindString
的第一个参数是开始搜索的索引,传入 -1
以从头开始搜索。第二个参数是您要查找的字符串。
返回值:如果找到匹配的项,FindString
返回该项的索引。如果没有找到匹配的项,它将返回 CB_ERR
。
部分匹配:FindString
执行的是部分匹配查找,即如果项的文本从开始处包含指定的字符串,它就认为是匹配的。
区分大小写:FindString
的搜索是不区分大小写的。
(6)FindStringExact
: 查找与指定字符串完全匹配的第一个项。
(7)SelectString
: 选择包含指定字符串的第一个项。
参数:SelectString
的第一个参数是开始搜索的索引,传入 -1
以从头开始搜索。第二个参数是您要查找并选择的字符串。
返回值:如果找到并成功选择了匹配的项,SelectString
返回该项的索引。如果没有找到匹配的项,它将返回 CB_ERR
。
部分匹配:SelectString
执行的是部分匹配查找,即如果项的文本从开始处包含指定的字符串,它就认为是匹配的。
区分大小写:SelectString
的搜索是不区分大小写的。
2.获取和设置属性
GetCount
: 获取组合框中的项数。GetDroppedState
: 检查下拉列表是否展开。SetItemHeight
: 设置项的高度。GetItemHeight
: 获取项的高度。SetExtendedUI
: 设置或清除扩展的用户界面。GetExtendedUI
: 检查是否使用了扩展的用户界面。LimitText
: 限制可输入的最大字符数。
void CSerialportIdentifyDlg::SetItemFromComboBox()
{
int nIndex;
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_SERIALPORT);
//向列表中添加几个项
pComboBox->AddString(_T("选项 1"));
pComboBox->AddString(_T("选项 2"));
pComboBox->AddString(_T("选项 3"));
// 假设您想设置当前选中项为索引为 0 的项(即第一个项)
pComboBox->SetCurSel(0);
//获取当前选中项的索引
nIndex = pComboBox->GetCurSel();
// 获取文本长度(不包括终止 null 字符)
int nLength = pComboBox->GetLBTextLen(nIndex);
//获取指定索引项的文本
CString strSelectedItem;
pComboBox->GetLBText(nIndex, strSelectedItem.GetBuffer(nLength));
strSelectedItem.ReleaseBuffer();
// 假设您想查找包含 "选项3" 的第一个项
//nIndex = pComboBox->FindString(-1, _T("选项 3"));
//pComboBox->SetCurSel(nIndex);
nIndex = pComboBox->FindStringExact(-1, _T("选项 3"));
pComboBox->SelectString(-1, _T("选项 3"));
//获取组合框中的项数
nIndex = pComboBox->GetCount();
//检查下拉列表是否展开
nIndex = pComboBox->GetDroppedState();
// 设置下拉列表中项的高度为 100 像素
pComboBox->SetItemHeight(-1, 100);
// 获取项的高度
nIndex = pComboBox->GetItemHeight(-1);
// 如果组合框有编辑框部分,将其高度设置为100像素
pComboBox->SetItemHeight(0, 100);
//检查是否使用了扩展的用户界面
nIndex = pComboBox->GetExtendedUI();
//设置或清除扩展的用户界面
pComboBox->SetExtendedUI(FALSE);
//用 GetExtendedUI 来检查设置是否生效
nIndex = pComboBox->GetExtendedUI();
//限制可输入的最大字符数
pComboBox->LimitText(2);
}