• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFC:MDIにおけるビューのアクティブ化)

MFC:MDIにおけるビューのアクティブ化

okdummy002の回答

回答No.6

質問者です。 アクティブ化がうまくいくのはMDIActivateではなくSetActiveView関数でした。度々の誤記申し訳ないです。

okdummy001
質問者

お礼

dummy

関連するQ&A

  • MDIタブ付グループでビューを切り替える

    VS2008 C++にてVisualStudioライクなアプリを作成しています。 タブ付グループでビューを切り替えるショートカットをはないものでしょうか。 自分でコードを書かないとならないのでしょうか。 通常のMDIであれば、「Ctrl + F6」がNext Viewのショートカットでしたが、これに変わるような操作の実装方法をアドバイスいただけないでしょうか。

  • MDIフォームとユーザコントロール

    VB.Netでの質問です。 ウィンドウメッセージを受け取りイベントを起こすユーザーコントロールクラス Class UserCtl Private Event MyKeyDown() Private Sub UserCtl_KeyDown() as Handels MyBase.KeyDown RaiseEvent MyKeyDown End Sub End Class プロセスA MDI子フォームにユーザーコントロールを追加し、子フォームにて、UserCtl.MyKeyDownイベントプロシージャでユーザーコントロールがウィンドウメッセージを受け取ったと認識し処理をします。 MDI子フォームはMDI親フォームより、CloseメソッドでしかCloseしません。 プロセスB FindWindowでMDI親フォーム, FindWindowExでMDI子フォーム、ユーザーコントロールハンドルを確認した上で、ユーザーコントロールにウィンドウメッセージをPostMessageします。 質問1 プロセスBからハンドルを探していますが、ウィンドウハンドル,ユーザーコントロールハンドルはいつまで有効なハンドルなのでしょうか? Closeでしょうか、それとも、Disposeでしょうか? 質問2 MDI親フォームでMDI子フォームをCloseした後でも、UserCtl.MyKeyDownは発生できるものなのでしょうか? 質問3 ユーザーコントロールで親フォーム(MDI子フォーム)がCloseされた事を認識する方法はないでしょうか? Me.Parent.IsDisposeでできるかなぁと考えているのですが。 よろしくお願いいたします。

  • MFC オリジナルDLLからエクスポートしたビュークラスを CMultiDocTemplate で登録すると Assert Failed! が出る

    環境はVisualStudio2005、MDIプロジェクトと拡張DLLプロジェクトを1つのソリューションに作成しています。 MDIアプリを作成していますが InitInstance() 関数内の CMultiDocTemplateの引数 RUNTIME_CLASS() 実行時にAssert Failed!が出ます。 CMultiDocTemplate に登録するビュークラスはオリジナルの拡張DLL内でCFormViewクラスから派生させたクラスです。 特に変わったことをしている訳ではなく、ほとんどウィザードがソースを吐いた状態のままです。 "COriginalView" をデフォルトの "CMyView" にするとエラーは出ません。 また、"COriginalView" もコントロールを1ヶ置いてビューフォームとクラスを作成し、 AFX_EXT_CLASS でエクスポートして参照できています。 また、MDI側でフォームとクラスを作成しそれを使用した場合はエラーは出ません。 ドキュメント/ビューアーキテクチャの理解が足りない為起きている問題だと思います。 宜しくお願い致します。 --- 詳細 ------------------------------------------------ CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_MAINFRAME,   RUNTIME_CLASS(CMyDoc),   RUNTIME_CLASS(CChildFrame),   RUNTIME_CLASS(CDllView)); ←これ実行時に Assert が出る AddDocTemplate(pDocTemplate); ---------------------------------------------------------

  • MDIフォームのメニュー構成

    開発言語: VB.net 開発環境: VisualStudio2005 .NET FrameWork: 2.0 現在、VB.netにてクライアント/サーバ形式のシステムの構築を行っているのですがメニュー画面の構築でお客様から以下の要望があがりました。 1. 画面左側にツリービューのメニューを表示し、右側に実画面を配置する。 2. ツリービューのメニューをクリックすると該当機能が起動すること(機能の切り替えがツリービューから行えること)。 3. メインのウインドウとしては1枚で行うこと。 WEBでのフレームを切った画面構成やVisualStudioの[ツール]-[オプション]画面のような構成をイメージされているようです。 クライアント/サーバシステムではご要望の形式は難しいとは思うのですが実現できるかどうかの評価を行っています。 現在、自分が考えている構想は以下の通りです。 ・MDIフォームを使用する ・MDI親フォーム左側にツリービューコントロールを配置する。 ・ツリービューから機能をクリックされた場合、子フォームとして表示する。 実際にテストしてみたのですが、ツリービューコントロールを配置し、クリックによって子フォームを開くところまでは成功しました。 しかし、表示したフォームがツリビューコントロールの下にもぐってしまいます。表示位置の指定もできましたが最大化されると同じことが 発生すると思います。こういう場合は親フォームにメニューバーを使用するしか手はないのでしょうか? 個人的には非常に複雑になるので要望の取り下げ依頼も必要かなと思っているのですがクライアント/サーバ形式でこういう機能を実現された方いらっしゃいましたらお教えください。 まったく別の方法で実現された方の意見等もお聞かせいただけるとありがたいです。 以上、宜しくお願い致します。

  • 特定のビューへのポインタ取得方法について

    MFCプログラミング(MDI)について教えてください。 1つのドキュメントに 複数の子ウィンドウ+子ビューのセットがあるとき、 特定のビューへのポインタの取得方法を教えてください。 ちなみに、ビューの種類は、 1.CViewの派生クラス 2.CFormViewの派生クラス です。 MSDNを調べ回っった結果、 ドキュメントクラスのポインタから、 GetNextView(pos)を使って順番にビューを使うところまで来たのですが、その後が分かりませんし、 この方法の方向性自体の是非も良く分かりません。 ご指導よろしくお願いします。 POSITION pos = pDoc->GetFirstViewPosition(); while(pos != NULL) { CView* tmpView = pDoc->GetNextView(pos); if(tmpView == ???????)........????? }

  • ピクチャーコントロールのデバイスコンテキストを取得するためには?

    VC2005についてです ピクチャーコントロールのデバイスコンテキストを操作するためには どうすればよいでしょうか? void CMainFrame::OnButton() { // ここに処理を書く CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; CButton *pButton =  (CButton*)pFrame->m_wndDialogBar.GetDlgItem(IDC_BUTTON1); pButton->SetWindowText("button"); MDIGetActive()->GetDC()->TextOutA(0,0,"文字列です"); } この様にすれば、アクティブになった 子ウィンドウデバイスコンテキストを取得することができますが、 アクティブになった、この子ウィンドウの上にある ピクチャーコントロールに 描画するためには どうすればよいでしょうか? MDIで、複数のウィンドウのうちで アクティブになった ものだけを 操作したいのです。 MDIGetActive()->GetDlgItem(IDC_PICTURE1)->GetDC()->TextOutA(0,0,"文字列です"); この方法では、エラーがでます。 よろしくお願いします。

  • CViewクラスの切り替え

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

  • VisualStudio2005のグリッドビューにEXCELデータを貼り込む?

    以前に同じ質問があったらすみません。 プログラム関係は全くの初心者ですが VisualStudio2005を使用してデータを作成しています。 表題通りグリッドビューを使用して表を作って その中身のデータをEXCELで作成し取り込みたいと思うのですが いまいち方法がわかりません。 初歩的な質問かもしれませんがネットで調べても よくわかりませんでした。 どこかに記述してあるHPがあるといいのですが・・・。 宜しくお願い致します。 ※WinXP ProでVisualStudio2005使用しています。 EXCELは2007です。

  • Closeメソッド詳細を教えてください

    MDI親フォームよりMDI子フォームをCloseした場合で困っています。 Class MDI子フォーム Private m_Class as New Class Public Sub New() WithEvent ユーザコントロールイベント End Sub Public Sub MDI子フォーム_Closed m_Class = Nothing End Sub Private Sub ユーザコントロール_ユーザコントロールイベント ' m_Class を使用 End Sub End Class といった感じのMDI子フォームを親フォームLoad時にNew後、Showします。MDI子フォームにて、m_Classをユーザコントロールイベントで参照を行います。ユーザコントロールイベントは、コントロール自身に対するメッセージを受け取ると発生します。 ・プロセスA 親フォームをスタートアップとしMDIフォーム ・プロセスB ユーザコントロールハンドルに対しメッセージ送信を行う 以上をふまえていただいて、プロセスAにてMDI子フォームを表示→Closeを繰り返し、プロセスBにてメッセージ送信を行っているとNull例外(ArgumentNullException?)が発生します。 Q1.子フォームがCloseされたあと、ユーザコントロールイベントが発生しているように思えるのですが、この認識は正しいのでしょうか? (Close処理後、Disposeされるまでの間にイベント通知されると、ユーザコントロールハンドルは開放されていないため、プロセスBよりメッセージ通知が可能となり、例外発生して当然のような気がしています) Q2.Closeメソッドは具体的に何をするのですか? (Closeしてもハンドル開放されず、Disposeで初めてハンドル開放されるのでしょうか?) 以上です。よろしくお願いいたします。

  • ActivityからViewクラスへデータの渡し方

    やりたいことは、次のサイトのTest131ActクラスからImageFileViewクラスへ文字列を受け渡して、 ImageFileViewで受けた文字列を使いたいのですが、どのように受け渡せばよいのでしょうか? http://www.usefullcode.net/2011/01/android_sdk_4.html 試したのは、事前にopenFileOutputでファイルに文字列を書いておき、ImageFileViewクラスのpublic ImageFileView(Context context)の中でopenFileInputを使おうとしましたが、「メソッド openFileInput(String) は型 ImageFileView で未定義です」 と表示されてしまいます。 クラス間のデータの受け渡しについて検索して試してみましたが、うまくいきません。 Viewクラスに文字列が受け渡せて処理結果が安定した方法であれば何でもよいのでお知恵を貸して下さい。 宜しくお願いします。 Android os:3.0~4.4 pc:windows 7

    • ベストアンサー
    • Java