gpt4 book ai didi

visual-c++ - 从 CComboBox 获取文本

转载 作者:行者123 更新时间:2023-12-01 10:05:07 25 4
gpt4 key购买 nike

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

我尝试过使用 myComboBox.GetWindowText(myString)。但是每当我在 Debug模式下运行它时,我的代码会在 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 变量。

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

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

最佳答案

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

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

关于visual-c++ - 从 CComboBox 获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com