注册 登录
编程论坛 VC++/MFC

Debug Assertion Failed

时光吉祥 发布于 2012-03-08 21:55, 804 次点击
依照孙鑫老师的《VC++深入详解》对话框一章(P229),动态创建按钮,目的是想通过点击“添加”按钮,出现一个“New”对话框。然而点击“添加”按钮时,出现了以下错误:
只有本站会员才能查看附件,请 登录

设置了断点,查到了错误,ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
                        ASSERT(pWnd != NULL);
                        ASSERT(pWnd->m_hWnd == NULL);   // only do once
但不知道该如何修改?查了好长时间,也没弄出个头绪,希望你们能帮个忙,非常感谢!


程序代码:
// TestDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "helike.h"
#include "TestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CTestDlg 对话框

IMPLEMENT_DYNAMIC(CTestDlg, CDialog)

CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTestDlg::IDD, pParent)
   
{
    m_bIsCreate=FALSE;
}

CTestDlg::~CTestDlg()
{
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_BTN_ADD, m_btn);
}


BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
    ON_BN_CLICKED(IDC_BTN_ADD, &CTestDlg::OnBnClickedBtnAdd)
END_MESSAGE_MAP()


// CTestDlg 消息处理程序

void CTestDlg::OnBnClickedBtnAdd()
{
    // TODO: 在此添加控件通知处理程序代码
   
    static BOOL bIsCreate=FALSE;

    if(bIsCreate==FALSE)
    {
        m_btn.Create(_T("NEW"),BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
            CRect(0,0,100,100),this,125);
        bIsCreate=TRUE;
    }
    else
    {
        m_btn.DestroyWindow();
        bIsCreate=FALSE;
    }

   
}


[ 本帖最后由 时光吉祥 于 2012-3-8 22:05 编辑 ]
1 回复
#2
BianChengNan2012-03-09 12:42
m_btn 是什么?? 在哪初始化的。。。
1