OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

CViewクラスの切り替え

  • すぐに回答を!
  • 質問No.105429
  • 閲覧数596
  • ありがとう数4
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 60% (48/80)

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

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

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

ご教示よろしくお願い致します。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル8

ベストアンサー率 44% (11/25)

正攻法だと全てのビューを検索して、表示させたい ビューと一致するものがあれば、それをアクティブに するという方法になると思います。 それらしいソースがあったので参考にどうぞ。 void CMainFrame::SwitchToView(CDocTemplate* pTemplate, CRuntimeClass *pViewClass) { CMDIChildWnd* pMDI ...続きを読む
正攻法だと全てのビューを検索して、表示させたい
ビューと一致するものがあれば、それをアクティブに
するという方法になると思います。
それらしいソースがあったので参考にどうぞ。


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のテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ