MFC中 CComboBox 控件 (2) —选择和检索项、获取和设置属性

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);
}

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值