高手请分析,关于CWnd::Create 的问题!
我有一个基于对话框的程序,在点击一个按钮时会 DoModal 一个新窗口,在新窗口中,我自己写了一个从CWnd继承的类,在这个类里的如下函数中
virtual BOOL Create(RECT &rect, CWnd * pParentWnd, UINT nID);
有代码:
CString szClassName=AfxRegisterWndClass(....);。。。
CWnd::CreateEx( 0, szClassName, NULL, WS_DLGFRAME|WS_CHILD|WS_VISIBLE|WS_TABSTOP, rect,pParentWnd, nID, NULL))
。
。
。
----------
问题是:
在点击第一次按钮时,可以弹出新窗口,并且里面自己创建的按钮等都无误,但是在关闭这个新窗口后,再点击按钮想弹出那个新窗口时就报错了!错误出自wingdi.cpp的1120行,也就是在下面这个函数里出错:
BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
===> ASSERT(m_hObject == NULL); <====错误
if (hObject == NULL)
return FALSE;
CHandleMap* pMap = afxMapHGDIOBJ(TRUE);
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hObject = hObject, this);
return TRUE;
}
------为什么?怎么解决呢? 请指教,谢谢。