我从CView派生了一个对象CTestView,它的构造和析构函数是protected类型。我在网上搜索过,好像有两种创建方法:方法一
CRuntimeClass* pViewClass=RUNTIME_CLASS(CView);
CView* pView=(CView*)pViewClass->CreateObject(); 方法二
CView* pView = new CView; 因为构造函数是protected类型,因此第二种方法不适合于我;第一种方法感觉应该可以,但是我在OnSize中想调整窗口对象尺寸时,我用pView->MoveWindow函数,发生了ASSERT(::IsWindow(m_hWnd))错误。也就是说创建的窗口指针是无效的。请问该如何创建一个CView对象?
CRuntimeClass* pViewClass=RUNTIME_CLASS(CView);
CView* pView=(CView*)pViewClass->CreateObject(); 方法二
CView* pView = new CView; 因为构造函数是protected类型,因此第二种方法不适合于我;第一种方法感觉应该可以,但是我在OnSize中想调整窗口对象尺寸时,我用pView->MoveWindow函数,发生了ASSERT(::IsWindow(m_hWnd))错误。也就是说创建的窗口指针是无效的。请问该如何创建一个CView对象?
MyView.create()
if(pView)
{
CRect rc;
GetClientRect(&rc);
if(!pView->Create(NULL, NULL, WS_CHILD|WS_VISIBLE, rc, this, NULL, NULL))
{
AfxMessageBox(_T("Create View failed."));
return TRUE;
}
pView->OnInitialUpdate();
}
修改CMyView的构造函数为public即可,CMyView派生自CView类