我有一个 CDialog ( myDialogBox
),它有一个 CComboBox
成员 ( myComboBox
)。我的目标是从下拉样式 CString
的编辑部分获取用户输入的文本(最好是 CComboBox
)。但是,我似乎无法让它发挥作用。
我试过使用 myComboBox.GetWindowText(myString)
。但是每当我在 Debug模式下运行它时,我的代码都会在 ASSERT(::IsWindow(m_hWnd))
函数中的 CWnd::GetWindowText()
处中断。
我也试过 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
变量。有人能指出我正确的方向吗?我究竟做错了什么?有什么建议么?
编辑: 以防万一它可能有助于理解我的最终目标,我试图有一个组合框,可以帮助用户图片并从字符串列表中进行选择。尽管如此,如果他/她不想要下拉列表中的任何内容,他可以提出自己的字符串。我想要一种方法来接收他的用户输入的字符串。
最佳答案
您需要在对话框销毁之前调用 GetWindowText
。一个很好的地方是在对话框的 DoDataExchange
成员函数中。
编辑:如果 CComboBox 对象尚未附加到实际窗口,您也可能会收到错误消息。这通常也发生在 DoDataExchange
中。
关于visual-c++ - 从 CComboBox 获取文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11834248/