gpt4 book ai didi

c++ - 为什么我不能将字符串添加到组合框?

转载 作者:可可西里 更新时间:2023-11-01 09:56:25 25 4
gpt4 key购买 nike

这看起来微不足道,但是对于 MFC,我总是会遇到一些愚蠢的微不足道的问题,这些问题会停止我的工作流程。

我收到指向 afxcmn2.inl 第 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"));
}

Google 上的大多数答案似乎表明 AddString 发生在 OnInitDialog 之前,这里似乎并非如此。 Google 上的另一系列答案表明数据交换没有发生或者是错误的,但事实并非如此:

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 中删除,因为该控件的目的是显示高级项(带有图像、标识等...),而不是直接的常规文本项。

关于c++ - 为什么我不能将字符串添加到组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757931/

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