MFCプログラミングについて教えてください。

同じドキュメントに対して、
通常の表示とOpenGL表示
2つのViewを作り、
切り替えボタンまで作ったのですが、
肝心のViewを切り替える方法が全く分かりません。

MDIなので、childframeで操作するのでしょうか?

ご教示よろしくお願い致します。

A 回答 (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クラスにも似たようなメンバがあります)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング