【发布时间】:2015-01-14 12:43:40
【问题描述】:
所以当我想运行我的程序时出现“断言失败”错误消息。我知道这意味着某处应该为真的条件不是,但我不知道如何纠正它。
错误涉及以下行:
_AFXWIN_INLINE BOOL CEdit::SetReadOnly(BOOL bReadOnly)
{ ASSERT(::IsWindow(m_hind)); return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L); }
所以我知道这是关于“只读”条件的,但我不知道在哪里更正。
我是 C++ 新手,如果我忘记在我的问题中提供重要信息,非常抱歉。
提前致谢!
【问题讨论】:
-
IsWindow 断言在窗口尚未创建(或销毁)时失败。你的代码放错地方了。例如,如果您尝试在对话框构造函数中执行此操作,请将代码移动到 OnOnitDialog。顺便说一句,问题标题看起来有点奇怪......
-
是的,不好意思,这是一个老问题的标题,我想问却没问,自动恢复了,我没注意。我要试试你的建议谢谢!
-
它实际上在 OnInidialog 上......对不起,因为我不太了解我在做什么,我真的不知道我应该添加什么信息......
-
我认为
m_hind是一个印刷错误。虽然令人困惑,因为您不应该再次键入代码,只需从 IDE 复制和粘贴即可。 -
我的 OnIni 对话框中是否应该有这些行:
BOOL SetReadOnly( BOOL bReadOnly = TRUE );
标签: c++ windows visual-studio-2010 mfc assertion