如何在组合框中获取当前选择的值(字符串)?
(不是整数索引)
可能有更好的方法(我的 MFC 有点生疏),但似乎您应该能够调用CComboBox::GetLBText()
,并使用CComboBox::GetCurSel()
.
一个普通的旧GetWindowText
作品,也是。
编辑:正如 ajryan 指出的那样,GetWindowText
实际上在处理程序中不起作用,CBN_SELCHANGE
因为新选择已生效,但窗口文本在发送时尚未使用新选择的文本进行更新WM_COMMAND
。
使用 GetLBText,传入索引和一个 CString 对象。
编辑:太慢了!
CB_GETCURSEL
返回整数索引
CB_GETLBTEXT
返回字符串在CB_GETCURSEL
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
有几种方法可以解决这个问题。
当您使用组合时,您可以将其映射到变量。
int
.CString
.正如其他人所说,当您的组合是下拉菜单时,您可以将其视为具有两个控件(列表和编辑)。用于GetWindowText
访问编辑控件文本。
您可以使用许多帮助宏。还有一个用于获取文本(ComboBox_GetText
宏)。节省您需要将控制映射到变量。
这实际上取决于您对组合控件的需求和使用情况。
CComboBox m_CComboBox;
CString currentValue;
m_CComboBox.GetWindowTextA(currentValue);
cout<<"My current Value is: <<currentValue<<endl;
2022年必须与MFC合作......