做项目时利用了窗口分割,如图所示。 分割部分代码如下:
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRPaneView), CSize(w/2,h), pContext); m_wndSplitter.SetColumnInfo(0, w/2, 20); m_wndSplitter.SetColumnInfo(1, w/2, 20); m_wndSplitter.SetRowInfo(0,h, 20); m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,0)); // //然后在m_wndSplitter2窗口的第0行第0列中绑定view1,第0行第1列中绑定view2。 m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CUPPaneView ),CSize(w/2,h/2),pContext); m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CPositionSimulationView ),CSize(w/2,h/2-16),pContext);左上为CUPPaneView,左下为CPositionSimulationView ,右侧为CRPaneView,需要在右侧按钮改写左上CUPPaneView中的list control内容,试了几种方法都不行,参考怎么得到一个分割后的窗口指针或句柄???后成功了。具体过程如下: UPPaneView.cpp中定义CUPPaneView *pCUPPaneView;和CUPPaneView* pUPPView;,主要是第二个指针,是调用要用到的。 在ChildFrm.cpp中调用extern CUPPaneView* pUPPView;,然后在窗口分割后加入
pUPPView= (CUPPaneView*)m_wndSplitter2.GetPane(0,0);//获取uppview窗口指针就可以成功获取左上窗口指针。
获取左下OCC显示窗口指针可能也可以这样实现,没去尝试,而是用的以下代码直接获取:
CMDIFrameWnd *PFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; CMDIChildWnd *pChild = (CMDIChildWnd*)PFrame->GetActiveFrame(); pView = (CPositionSimulationView *)pChild->GetActiveView();