SDI的多个视图切换, 主要是要让视图(CView)和文档(CDocument)和框架(CWinFrame)关联起来.
(1)视图和 CDocument关联,使用CDocument::AddView,
如果要解除关联,用CDocument::RemoveView
(2)视图和CWinFrame关联, 在视图Create的时候,用CWinFrame做父窗口
注意: 由于SDI的CWinFrame只把消息发送给AFX_IDW_PANE_FIRST,
所以需要把当前窗口的ID设置成AFX_IDW_PANE_FIRST, 使用SetWindowLong(GWL_ID,AFX_IDW_PANE_FIRST);
也可以使用CWnd::SetDlgCtrlID函数.
(3)新产生的视图(new CxxxView),在程序退出的时候不需要显式delete, 它会自己delete
(4)另外一种关联的方法是在CWinFrame::CreateView中通过设置CCreateContext的m_pNewViewClass和m_pCurrentDoc来实现, 用这种方式,最佳的创建时机是在CWinFrame::OnCreateClient, 这里需要为每个视图指定一个不同的ID, 当然,最后要显示的时候,当前视图的ID必须是AFX_IDW_PANE_FIRST.
此外, 还可以用切分视图来包容多个视图. 用CSplitterWnd
SDI多视图切换
最新推荐文章于 2015-01-28 15:22:05 发布