获取分割子窗口指针的方法

    技术2024-08-14  61

    做项目时利用了窗口分割,如图所示。 分割部分代码如下:

    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();
    Processed: 0.010, SQL: 9