mrdotK 2015-05-14 12:29 采纳率: 50%
浏览 5364
已采纳

MFC断言ASSERT(::IsWindow(m_hWnd))

一个HomeWork的单文档MFC工作空间,新建了一个继承CWnd的CNew类,
在CNew中
重写void CNew::OnPaint()
{

CPaintDC dc(this);
dc.MoveTo(0,0);
dc.LineTo(300,300);

}
定义 void CNew::Clear()
{ InvalidateRect(NULL,TRUE); }
然后新增一个菜单项Clear,添加菜单命令相应函数
void CHomeWorkView::OnCLear()
{
new.Clear();//new 已经定义成CHomeWork的成员变量
}
出现这种错误:
_AFXWIN_INLINE void CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase)
{ ASSERT(::IsWindow(m_hWnd)); ::InvalidateRect(m_hWnd, lpRect, bErase); }
求大神帮帮忙,我在百度上搜了很久了,没找到解决方案,有一个方案是这样的

---------------->>>我遇到的情况是,A类的Clear函数中调用了this->Invalidate();,而B类调用了A类的Clear函数,此时A类还未实例化,所以A类句柄为空,m_hWnd = NULL。我的解决方法是将A类的实例化放在B类前,问题解决。,<<<--------------

没办法,还是没解决掉,故而来求大神解决了,我才刚刚学MFC

  • 写回答

4条回答 默认 最新

  • deg936 2015-05-14 13:10
    关注

    如果你是想在视图上绘制,是不必新加一个CNew窗口的,可以直接在 CHomeWorkView::OnDraw()中进行绘制。
    如果你一定要增加一个CNew窗口,那么只是在CHomeWork中定义new变量是不行的,new对应的窗口并没有创建出来,
    还要在CHomeWork::OnCreate中调用new.Create来创建出窗口。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行