【发布时间】:2012-08-06 19:01:58
【问题描述】:
我有一个 CDialog (myDialogBox),它有一个 CComboBox 成员 (myComboBox)。我的目标是从下拉样式CComboBox 的编辑部分获取用户输入的文本(最好是CString)。但是,我似乎无法让它工作。
我尝试过使用myComboBox.GetWindowText(myString)。但是每当我在调试模式下运行它时,我的代码在CWnd::GetWindowText() 函数内的ASSERT(::IsWindow(m_hWnd)) 处中断。
我也试过myDialogBox.GetDlgItemText(MY_COMBOBOX_ID, myString),它以类似的方式分解。
另外,我试过了:
COMBOBOXINFO info;
memset(&info,0,sizeof(info));
myComboBox.GetComboBoxInfo(&info);
LPTSTR str = new TCHAR[::GetWindowTextLength(info.hwndItem)];
::GetWindowText(info.hwndItem,str,::GetWindowTextLength(info.hwndItem));
但是,它似乎没有正确填充我的 info 变量。
请有人指出我正确的方向吗?我究竟做错了什么?有什么建议么?
编辑:以防万一它可能有助于理解我的最终目标,我试图有一个组合框,它可以帮助用户拍照并从字符串列表中进行选择。尽管如此,如果他/她不想要下拉列表中的任何内容,他可以想出自己的字符串。我想要一种方法来接收他的用户键入的字符串。
【问题讨论】:
-
您应该在对话框的
DoDataExchange()方法映射MY_COMBOBOX_ID到myComboBox中有一个自动生成的DDX_Control行。MY_COMBOBOX_ID在 resource.h 中也应该有一个唯一的数值。如果没有这些,您会得到您所描述的行为。 -
参考下面我对 Mark Ransom 的第二次回复......我相信我有这些要求。 (包括resource.h中的值)
标签: visual-c++ mfc ccombobox