• 締切済み

CViewクラスの切り替え

MFCプログラミングについて教えてください。 同じドキュメントに対して、 通常の表示とOpenGL表示 2つのViewを作り、 切り替えボタンまで作ったのですが、 肝心のViewを切り替える方法が全く分かりません。 MDIなので、childframeで操作するのでしょうか? ご教示よろしくお願い致します。

みんなの回答

  • bir
  • ベストアンサー率44% (11/25)
回答No.1

正攻法だと全てのビューを検索して、表示させたい ビューと一致するものがあれば、それをアクティブに するという方法になると思います。 それらしいソースがあったので参考にどうぞ。 void CMainFrame::SwitchToView(CDocTemplate* pTemplate, CRuntimeClass *pViewClass) { CMDIChildWnd* pMDIActive = MDIGetActive(); CDocument* pDoc = pMDIActive->GetActiveDocument(); CView* pView; POSITION pos = pDoc->GetFirstViewPosition(); while (pos != NULL) { pView = pDoc->GetNextView(pos); if (pView->IsKindOf(pViewClass)) { // 要求されたビュークラスはすでに作成されているので、 // それを表示する pView->GetParentFrame()->ActivateFrame(); return; } } // 要求されたビュークラスはまだ作成されていない CMDIChildWnd* pNewFrame = (CMDIChildWnd*) pTemplate->CreateNewFrame(pDoc, NULL); if (pNewFrame == NULL) return; pTemplate->InitialUpdateFrame (pNewFrame, pDoc); } 使えるかどうかわかりませんが、子ウィンドウのポインタがわかっていれば、 CMDIFrameWnd::MDIActivate() でもできるかもしれません。 (CMDIChildWndクラスにも似たようなメンバがあります)

関連するQ&A