MFC SDI单文档多视图的实现及自由切换(2种实现方式简析)
superzlc:
确实可以 就是得整理了
在CMainFrame类下
void NewWebPage()
{
CreateView();
int i = myViewArray.GetSize() - 1;
pNewView = myViewArray[i];
pActiveView = ((CMyView *)GetActiveView());
//View窗口ID置换
UINT temp1 = ::GetWindowLong(pActiveView->m_hWnd, GWL_ID);
UINT temp2 = ::GetWindowLong(pNewView->m_hWnd, GWL_ID);
::SetWindowLong(pActiveView->m_hWnd, GWL_ID, temp2);
::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp1);
SetActiveView(pNewView);
pActiveView->ShowWindow(SW_HIDE);
pNewView->ShowWindow(SW_SHOW);
RecalcLayout();
pActiveView->Invalidate();
pNewView->Navigate2(_T("http://www.baidu.com/"),NULL,NULL);
}
void CreateView()
{
CMyView *pMyView = (CMyView *)new CMyView;
UINT m_ID = AFX_IDW_PANE_FIRST + 1/*count*/;
CCreateContext context;
context.m_pCurrentDoc = GetActiveDocument();
pMyView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0,0,0,0), this, m_ID, &context/*NULL*/);
myViewArray.Add(pMyView);
}
|