gpt4 book ai didi

c++ - MFC CListBox.AddString() 不显示字符串

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:00 25 4
gpt4 key购买 nike

我正在创建一个 MFC 应用程序并尝试在对话框类中添加列表框。当我使用调试配置时,出现错误并且应用程序崩溃。当我使用发布配置时,对话框出现了,但是是空的。

我刚开始用这个,所以我的代码是基本的:

//code... (it is including #include "MyDialog.h") 

CMyDialog dialog; //CMyDialog includes public CListBox variable m_listBox
CString str;
str = L"Hello";
dialog.m_listBox.AddString(str);
dialog.DoModal();

//code...

但不管怎样,它都不起作用。

在调试配置中,我收到此消息:“调试断言失败!” Debug Assertion failed!

在发布配置中,对话框是空的(而不是带有“Hello”的一行):

我的对话框:

MyDialog .

错误发生在调用 AddString() 函数时,即使在 CMyDialog 类中调用此函数时也会发生错误(例如,我试图在构造函数中调用它)。

我想知道我做错了什么,我想问题不在对话框类本身,而是在其他地方。我试图通过互联网搜索,但没有找到解决方案,所以我在这里:)

最佳答案

您做错的是过早地尝试使用成员 (m_listBox)。作为对话框控件的成员,与像 CString 成员这样的非窗口类型相反,只有在使用 DoModal() 调用对话框后才处于要使用的状态。

断言是调试宏,这就是为什么您在发布配置中看不到问题的原因。

填充列表框控件的正确位置通常是 OnInitDialog覆盖成员函数。然后该对话框已被该阶段调用,并且该对话框拥有的控件将具有窗口句柄并且可以使用。

如果您特别想在调用对话框之前将字符串文字传递给对话框,那么您可以将 CString 作为对话框类的成员变量。这样的成员存在于类实例的构造中,并且可以通过构造函数、公共(public) setter 或具有公共(public)可访问性来设置。

关于c++ - MFC CListBox.AddString() 不显示字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50620460/

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