20

如何在组合框中获取当前选择的值(字符串)?

(不是整数索引)

4

7 回答 7

29

可能有更好的方法(我的 MFC 有点生疏),但似乎您应该能够调用CComboBox::GetLBText(),并使用CComboBox::GetCurSel().

于 2009-01-26T20:49:59.490 回答
9

一个普通的旧GetWindowText作品,也是。

编辑:正如 ajryan 指出的那样,GetWindowText实际上在处理程序中不起作用CBN_SELCHANGE因为新选择已生效,但窗口文本在发送时尚未使用新选择的文本进行更新WM_COMMAND

于 2009-01-26T21:51:56.853 回答
5

使用 GetLBText,传入索引和一个 CString 对象。

编辑:太慢了!

于 2009-01-26T20:54:28.840 回答
0

CB_GETCURSEL返回整数索引 CB_GETLBTEXT返回字符串在CB_GETCURSEL

于 2009-01-26T20:59:56.350 回答
0
char buffer[MAX_COMBO_STRING_LENGTH];

int index= static_cast<int>(SendDlgItemMessage(hDlg, ID_COMBO_BOX, CB_GETCURSEL, 0, 0));
SendDlgItemMessage(hDlg, ID_COMBO_BOX, CB_GETLBTEXT, index, (LPARAM)(LPCTSTR)buffer);

//buffer contains the selected text unless CB_GETCURSEL returned CB_ERR (-1) to the index
于 2021-11-17T08:05:05.573 回答
0

有几种方法可以解决这个问题。


映射到变量

当您使用组合时,您可以将其映射到变量。

  • 如果您的组合是下拉列表,则它映射到int.
  • 如果您的组合是下拉列表,则将其映射到CString.

直接访问

正如其他人所说,当您的组合是下拉菜单时,您可以将其视为具有两个控件(列表和编辑)。用于GetWindowText访问编辑控件文本。


使用宏

您可以使用许多帮助宏。还有一个用于获取文本(ComboBox_GetText宏)。节省您需要将控制映射到变量。

这实际上取决于您对组合控件的需求和使用情况。

于 2021-11-17T08:09:38.140 回答
0
CComboBox   m_CComboBox;
CString currentValue;


m_CComboBox.GetWindowTextA(currentValue);
cout<<"My current Value is: <<currentValue<<endl;

2022年必须与MFC合作......

于 2022-02-04T15:55:15.233 回答