从CComboBox获取文本

JHo*_*zer 3 mfc ccombobox visual-c++

我有一个myDialogBoxCComboBox成员(myComboBox)的CDialog ().我的目标是CString从下拉样式的编辑部分获取用户输入的文本(最好是a )CComboBox.但是,我似乎无法让它发挥作用.

我试过用了myComboBox.GetWindowText(myString).但每当我在调试模式下运行它时,我的代码在函数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));
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有info正确填充我的变量.

有人能指出我正确的方向吗?我究竟做错了什么?有什么建议?

编辑:以防万一它可能有助于理解我的最终目标,我试图有一个组合框,可以帮助用户图片和从字符串列表中选择.尽管如此,如果他/她不想在下拉列表中找到任何内容,他可以拿出自己的字符串.我想要一种接收用户输入字符串的方法.

Mar*_*som 6

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

编辑:如果CComboBox对象尚未附加到实际窗口,您也可能会收到错误.这也通常发生在DoDataExchange.