MFC CListBox.AddString() 不显示字符串
MFC CListBox.AddString() doesn't show string
我正在创建 MFC 应用程序并尝试在对话框中添加列表框 class。当我使用调试配置时,出现错误并且应用程序崩溃。当我使用发布配置时,对话框出现了,但是是空的。
我刚开始用这个,所以我的代码很基础:
//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 中调用此函数时也会发生错误 class(例如,我试图在构造函数中调用它)。
我想知道我做错了什么,我想问题不在对话框 class 本身,而是在其他地方。我试图通过互联网搜索,但没有找到解决方案,所以我在这里:)
您做错的是过早地尝试使用成员 (m_listBox
)。作为对话框控件的成员,与非 window 类型(如 CString 成员)相反,只有在使用 DoModal()
.
调用对话框后才处于要使用的状态
断言是调试宏,这就是为什么您在发布配置中看不到问题的原因。
填充列表框控件的正确位置通常是 OnInitDialog
覆盖成员函数。然后该对话框已被该阶段调用,并且该对话框拥有的控件将具有 window 句柄并且可以使用。
如果您特别想在调用对话框之前将字符串文字传递给对话框,那么您可以将 CString 作为对话框的成员变量 class。这样的成员在构建 class 实例时存在,并且可以通过构造函数或 public setter 或具有 public 可访问性来设置。
我正在创建 MFC 应用程序并尝试在对话框中添加列表框 class。当我使用调试配置时,出现错误并且应用程序崩溃。当我使用发布配置时,对话框出现了,但是是空的。
我刚开始用这个,所以我的代码很基础:
//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 中调用此函数时也会发生错误 class(例如,我试图在构造函数中调用它)。
我想知道我做错了什么,我想问题不在对话框 class 本身,而是在其他地方。我试图通过互联网搜索,但没有找到解决方案,所以我在这里:)
您做错的是过早地尝试使用成员 (m_listBox
)。作为对话框控件的成员,与非 window 类型(如 CString 成员)相反,只有在使用 DoModal()
.
断言是调试宏,这就是为什么您在发布配置中看不到问题的原因。
填充列表框控件的正确位置通常是 OnInitDialog
覆盖成员函数。然后该对话框已被该阶段调用,并且该对话框拥有的控件将具有 window 句柄并且可以使用。
如果您特别想在调用对话框之前将字符串文字传递给对话框,那么您可以将 CString 作为对话框的成员变量 class。这样的成员在构建 class 实例时存在,并且可以通过构造函数或 public setter 或具有 public 可访问性来设置。