代码如下,我试图在分割窗口后切换视图,总是出错,调试时类指针的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);
}
我见别人的程序都是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);
}
出现???基本上都是地址无效。
这不是赋值吗?莫非这条语句有什么不对?