Luk*_*lík 2 c++ mfc clistbox visual-studio
我正在创建一个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...
Run Code Online (Sandbox Code Playgroud)
但无论如何它都不起作用.
在调试配置中,我收到以下消息:"Debug Assertion failed!"
在发布配置中,对话框为空(而不是带有'Hello'的行):
MyDialog:
.
错误发生在调用AddString()函数的时刻,即使在CMyDialog类中调用此函数时也会发生错误(例如我试图在构造函数中调用它).
我想知道我做错了什么,我想这个问题不是在对话类本身,而是在其他地方.我试图通过互联网搜索,但我找不到解决方案,所以我在这里:)
你做错了是试图m_listBox
过早使用member().作为对话框控件的成员,与CString成员之类的非窗口类型相反,只有在调用对话框后才能使用DoModal()
.
断言是调试宏,这就是为什么你没有在Release配置中得到问题的原因.
填充列表框控件的正确位置通常是OnInitDialog
覆盖成员函数.然后该对话框已被该阶段调用,对话框拥有的控件将具有窗口句柄并可以使用.
如果您特别希望在调用对话框之前将字符串文字传递给对话框,则可以将CString作为对话框类的成员变量.这样的成员在构造类实例时存在,并且可以通过构造函数或公共setter设置,或者通过具有公共可访问性来设置.
归档时间: |
|
查看次数: |
425 次 |
最近记录: |