在听孙鑫老师的课程时,在第七课讲到在模态对话框中,点击Add按钮,会动态创建一个新的按钮。按照他讲的这个代码,在VS2008中运行,总会出现断言。m_btn.Create(_T("guai"),WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,CRect(0,0,100,100),this,123);以下为断言出现的地方wincore.cpp 638ASSERT(pWnd != NULL);本人初学MFC,不懂呐,不知道该如何解决。希望得到好心高手的帮助,谢谢!另外我还没有太多的分给大家,希望能得到热心人的帮助,谢谢!
你在Add的创建代码改成就好了
if(NULL==m_btn.m_hWnd)
{
m_btn.Create(_T("guai"),WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,CRect(0,0,100,100),this,123);
}
else
{
m_btn.DestroyWindow();
}
{
_AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
if (pThreadState->m_pWndInit == pWnd)
return; if (pThreadState->m_hHookOldCbtFilter == NULL)
{
pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
_AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
if (pThreadState->m_hHookOldCbtFilter == NULL)
AfxThrowMemoryException();
}
ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
ASSERT(pWnd != NULL);
ASSERT(pWnd->m_hWnd == NULL); // only do once ASSERT(pThreadState->m_pWndInit == NULL); // hook not already in progress
pThreadState->m_pWndInit = pWnd;
}
http://blog.vckbase.com/arong/archive/2005/03/30/4231.html