首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CComboBox获取文本

从CComboBox获取文本
EN

Stack Overflow用户
提问于 2012-08-06 19:01:58
回答 2查看 10.8K关注 0票数 3

我有一个CDialog (myDialogBox),它有一个CComboBox成员(myComboBox)。我的目标是从下拉样式的CString的编辑部分获取用户类型的文本(最好是作为CComboBox )。但是,我似乎不能让它起作用。

我试过使用myComboBox.GetWindowText(myString)。但是,每当我在调试模式下运行它时,我的代码就会在ASSERT(::IsWindow(m_hWnd))CWnd::GetWindowText()函数中中断。

我也尝试过myDialogBox.GetDlgItemText(MY_COMBOBOX_ID, myString),它以类似的方式崩溃。

此外,我还试过:

代码语言:javascript
复制
    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变量。

有人能给我指个正确的方向吗?我做错了什么?有什么建议吗?

编辑:为了帮助理解我的最终目标,我正在尝试一个组合框,它可以帮助用户图片并从字符串列表中进行选择。尽管如此,如果他/她不想在下拉列表中出现任何一个,他可以找到自己的字符串。我想要一种接收他的用户类型字符串的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 19:06:41

在销毁对话框之前,您需要调用GetWindowText。这样做的一个好地方是在对话框的DoDataExchange成员函数中。

编辑:如果CComboBox对象没有附加到实际窗口,您也可以得到一个错误。这通常也发生在DoDataExchange中。

票数 6
EN

Stack Overflow用户

发布于 2017-05-19 13:21:46

您可以使用以下代码获得组合框文本:

代码语言:javascript
复制
CString cStr;
CWnd* Pfield = GetDlgItem(MY_COMBOBOX_ID);
Pfield->GetWindowText(cStr);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11834248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档