调试时,断言失败。..\3077\vc\MFCATL\ship\atlmfc\include\afxwin2.inLine: 619点击重试Unhandled exception at 0x7c29112b (mfc71d.dll) in XXX.exe: User breakpoint.搞不懂了。请问有遇到类似问题的兄弟没?帮忙指点下迷津,谢谢。

解决方案 »

  1.   

    打开afxwin2.inl
    看看619行的代码
      

  2.   


    _AFXWIN_INLINE void CButton::SetButtonStyle(UINT nStyle, BOOL bRedraw)
    { ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw); }
      

  3.   


    m_btnNum0.SetBitmaps(NUM0_NORMAL, NUM0_HOVER ,NUM0_DOWN);
    CButtonEx m_btnMore;m_btnNum0是 一个CButtonEx,提示是其句柄无效?怎么会这样?
      

  4.   


    说明你的调用SetButtonStyle函数的对象不是一个合法的windows窗口
      

  5.   


    你的m_btnMore还没有Create吧,当然不是一个有效地窗口
      

  6.   

    怎么会这样?那是一个按钮,直接关联的。DDX_Control(pDX, IDC_BUTTON_NUM0, m_btnNum0);
      

  7.   

    直接控件关联的,不用Create吧。那么为什么会这样?顺序问题?
      

  8.   


    那你要看下m_hWnd这个成员的值了,检查下有没问题
      

  9.   

    m_hWnd是在DDX中赋值的,而DDX是在CDialog::OnInitDialog()里调用的,你是不是在CDialog::OnInitDialog()之前就调用了CButton::SetButtonStyle了啊?
      

  10.   

    我当年也遇到过一个困扰我很长时间的断言失败,,
    原因是子窗口没创建 就在 movewindow中改变子窗口的大小
      

  11.   

    把所有断点都去掉,CLEAN后重新编译运行下看看?
      

  12.   

    真是这个问题,打了断点,DoDataExchange没进去,原来基类OnInitDialog竟然没有调用CDialog::OnInitDialog(),直接return TRUE了。