静态分裂视图获取视图指针的方法
无悔梦归处 2011-03-14 05:19:19 我的工程用到了静态分裂视图的方法,视图间的通信主要是通过在CMainFrame获取视图消息然后处理;采用
CMainFrame *pFrm=(CMainFrame *)AfxGetApp()->GetMainWnd();
CFormImageSamResult *pView1=(CFormImageSamResult *)pFrm->m_wndSplitterClientUp.GetPane(0,0);
我可以在任意视图中获取分裂视图的指针,但是当我在视图的OnSize消息中采用这种方法获取视图指针时就会报错了,主要是非法指针访问断言错误的问题:
int CSplitterWnd::IdFromRowCol(int row, int col) const
{
ASSERT_VALID(this);////////此处出错!
ASSERT(row >= 0);
ASSERT(row < m_nRows);
ASSERT(col >= 0);
ASSERT(col < m_nCols);
return AFX_IDW_PANE_FIRST + row * 16 + col;
}
难道此时我的分割器对象不存在了?为什么在视图的其他函数中使用都是可以的,OnSize 运行的时间较早,和这个有关系没有?我在视图的OnInitUpdate中使用都没有此问题!