为什么我无法将字符串添加到组合框?
Why can't I add a string to a combo box?
这似乎微不足道,但与MFC我总是结束了一些愚蠢的琐碎的问题,使我的工作流程停止。
我得到一个"调试断言失败"错误指向afxcmn2。第352行:
_AFXCMN_INLINE int CComboBoxEx::AddString(LPCTSTR lpszString)
{ UNUSED_ALWAYS(lpszString); ASSERT(FALSE); return CB_ERR;}
我正试图在初始化时添加一些字符串到组合框,如下所示:
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.AddString(CString("North"));
}
谷歌上的大多数答案似乎表明,AddString是发生在OnInitDialog之前,这似乎不是这里的情况。谷歌上的另一系列答案表明,数据交换没有发生,或者是错误的,但事实并非如此:
void myDialog::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_WHEDIT_DIR, cb_direction);
}
另一个建议是,组合框还没有被创建,但如果我禁用组合框使用以下代码,我不仅没有得到一个错误,但它实际上工作并禁用框!
BOOL myDialog::OnInitDialog()
{
CDHtmlDialog::OnInitDialog();
cb_direction.EnableWindow(FALSE);
}
我已经清理了溶液并重建了它。我不确定我还错过了什么。我所要做的就是在组合框中添加一个字符串,这在。net中需要2秒钟(这个程序是几年前由其他人编写的,这就是为什么它在MFC而不是。net中,但我离题了)。
进入游戏有点晚,但谁知道呢,这可能会帮助某人某天:
COMBOBOXEXITEM item;
ZeroMemory(&item, sizeof(item));
item.mask = CBEIF_TEXT;
item.iItem = 0;
item.pszText = _T("Hello");
m_ComboEx.InsertItem(&item);
FWIW, AddString()功能从CComboEx中删除,因为该控件的目的是显示高级项(带有图像,标识,等等),而不是直接的常规文本项。
如果你看看这个方法在做什么它们里面有一个ASSERT(FALSE)
,所以不足为奇。它实际上并没有做任何事情来表明它向ComboBoxEx
控件添加了一个项目。根据docs
Windows ComboBoxEx控件不支持此功能。有关此控件的详细信息,请参阅平台SDK中的ComboBoxEx控件。
文档是你的朋友:)
相关文章:
- 从文本文件在组合框中添加项目
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 如何搜索向单词添加字母的所有可能组合?
- 在 MFC 组合框中设置文本,而不将其添加到列表中
- 如何在 C++ 中的资源脚本中将项添加到组合框
- 如何在Qttropropertybrowser类的单元格中添加组合
- 向 MFC 组合框添加新字符串时触发的断言
- 如何在Visual c++中通过更改组合框中的选项来添加或删除文本框
- 如何将字符串添加到 MFC 中的组合框
- C++-缓冲区组合添加额外的空值
- 将大量字符串添加到 MFC 组合框
- WinApi :为组合框添加样式
- 在 wxWidgets (Windows) 的工具栏中添加组合框
- C ++ win 32,我想将项目列表添加到组合框中.我该怎么做
- 从数据库检索后,将其他文本添加到组合框中
- 如何将组合框添加到TreeView列
- 为什么我无法将字符串添加到组合框?
- 添加字符串到MFC组合框
- 向组合框MFC添加可见的窗口标题
- 在c++ Builder XE8中显示/添加项目到某些组合框