代码如下,我试图在分割窗口后切换视图,总是出错,调试时类指针的value栏显示0xXXXXXX(X为数字) {类名,hwnd=???},
我见别人的程序都是hwnd=数值,不知道错误是不是在这里,如果是的话怎么改正?谢谢!!
void CMySplitterWnd::ChangeView(int row, int col, CRuntimeClass* pViewClass)
{
ASSERT(pViewClass->IsDerivedFrom(RUNTIME_CLASS(CView))); CView* pView = STATIC_DOWNCAST(CView, GetPane(row, col));
CFrameWnd* pFrame = pView->GetParentFrame();
ASSERT(pFrame);
CCreateContext cc;
memset(&cc, 0, sizeof(cc));
cc.m_pNewViewClass = pViewClass;
cc.m_pCurrentDoc = pView->GetDocument();
cc.m_pNewDocTemplate = cc.m_pCurrentDoc ?
cc.m_pCurrentDoc->GetDocTemplate() : NULL;
cc.m_pCurrentFrame = pFrame; DeleteView(row, col);  
TRACE("Rows=%d,Columns=%d",GetRowCount,GetColumnCount);
VERIFY(CreateView(row, col,pViewClass,CSize(0,0),&cc));//创建新视图 RecalcLayout();    CWnd* pWnd = GetPane(row, col);
if (pWnd)
pWnd->SendMessage(WM_INITIALUPDATE);
}

解决方案 »

  1.   

    句柄无效,检查下hwnd怎么赋值的
      

  2.   

    类指针无效,指针指向的内存是无效地址,无法读取hwnd等成员的值。
    出现???基本上都是地址无效。
      

  3.   

    对象分配new了,但是窗口没有创建create或没成功
      

  4.   

    CView* pView = STATIC_DOWNCAST(CView, GetPane(row, col)); 
    这不是赋值吗?莫非这条语句有什么不对?