• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ドッキングウィンドウがドッキングしている場合のメインフレームのクライア)

ドッキングウィンドウがドッキングしている場合のメインフレームのクライア

このQ&Aのポイント
  • 複数の子ウィンドウをメインフレームの中の表示可能領域に自由に配置する方法を探しています。また、ドッキングウィンドウの取得方法についても教えてください。
  • メインフレームのクライアント領域内にドッキングウィンドウを配置したいですが、取得方法がわかりません。また、ドッキングウィンドウの取得方法も教えてください。
  • VisualC++2008を使用して、メインフレーム内にドッキングウィンドウを配置したいです。表示可能領域の取得方法やドッキングウィンドウの取得方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

MDIの場合、ウインドウの構成が次のようになっています。(あいだにMDIClientというウインドウが1枚挟まっている) MDIClientのウインドウサイズを取得すればよいでしょう。 MDIFrameWnd   | MDIClient   | [MDIChildWnd][MDIChildWnd]...[MDIChildWnd] たしか、MDIClientのIDは、AFX_IDW_PANE_FIRSTだったと思います。 アプリのメインウインドウがYourMDIFrameWndだとして、 pYourMDIFrameWnd->GetDlgItem(AFX_IDW_PANE_FIRST)->GetWindowRect() で取得できないでしょうか。 あるいは、MDIChildWndの側から、 pYourMDIChildWnd->GetParent()->GetWindowRect() でも取得できると思います。 ちなみに、MDITileは、MDIClientに対してメッセージを送信するだけです。 ::SendMessage( hWndMDIClient, WM_MDITILE, 0, 0) ;

grgrq
質問者

お礼

返事が遅れてすみません。ずっと回答がないと思ってまして・・・今日気付きました。 実は力ずくで解決してしまったのですが・・(何気にかなり苦労しました) MDIClientいうのが間にあるわけですね。来週になってしまうのですが試させて頂きます。これでうまくいくならとてもシンプルなコードになります。力ずくの苦労は無駄になりますが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • IEの中にドッキングするウインドウ

    あるソフト(keepoint)をインストールしたら、 IEの中にドッキングするウインドウとして 表示されました。 ウインドウの動作としては、[検索][お気に入り] [メディア][履歴]などと同じです。 実際にはドッキングする場所は変えられない ようなので“ウインドウ”ではないかもしれません。 Opera や NN には表示されないので、IEだけの 機能なのかもしれませんが、APIか何かが あるのではないかと思います。 このようなウインドウを作るための情報は どこかにないでしょうか。よろしくお願いします。

  • C#のクラスライブラリでメッセージボックスを表示

    VisualStudio2010でVisualC#のクラスライブラリやコンソールアプリケーションでメッセージボックスを表示させたいのですが、 Windowsフォームアプリケーションでは MessageBox.Show("メッセージ本文","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Exclamation); で表示させることができたのですが、 クラスライブラリやコンソールアプリケーションでの中から表示する仕方が分かりません。(OS WindowsXP VisualStudio2010) 1) VisualC#のクラスライブラリでメッセージボックスを表示させるには public class Class1 { }   の中にどのようなコードを記述すればよいのでしょうか。 2) VisualC#のコンソールアプリケーションでメッセージボックスを表示させるには static void Main(string[] args) { }   の中にどのようなコードを記述すればよいのでしょうか。 よろしくお願いします。

  • VisualC++におけるメインウィンドウの領域に子ウィンドウを配置する際に発生する問題

    メインウインドウの領域に子ウインドウを作成し、その子ウインドウの領域にオブジェクトを表示しようとしています。 そこで、子ウインドのプロシージャに描画するソースを書いているのですが、子ウインドウの描画領域には何も表示されず、親ウインドウの描画領域に表示されてしまいます。 どうすれば子ウインドウの領域に描画することができるのでしょうか? 説明の至らない点もあると思いますが、わかる方いらっしゃいましたら宜しくお願い致します。

  • VisualStudioデザイン画面

    説明が難しいのですが、VisualStudio VB6 のデザイン画面と言うのでしょうか、 起動すると最初に表示される画面ですが、とある、サイトから、サンプルプロジェクトをダウンロードし、開いて以来、前の表示の仕方と変わってしまいました。 以前は、プロジェクトエクスプローラとかプロパティウィンドウ、ソースの表示領域が一体化していたのですが、現在、最初のデザイン画面が最大化をクリックしても、メニューバー領域の2,3行のみしか、表示されず、その他のウィンドウをドッキング可能とかとやっても、一体化しません。 何が変更されてしまったのでしょう。。。 「表示」のあたりから、いろいろ、触ったり、調べたりもしたのですがわからず、使えないわけではないのですが、どぅも、気持ちが悪く、設定箇所等、わかる方いらっしゃいましたら、よろしくお願いいたします。

  • 子ウィンドウの操作について(VC++)

    Windows98 Visual C++6.0 雛型でMDIを作成して、アクティブな子ウィンドウに記述されている文字列を操作したいと思っています。 ダイアログボックスを表示して、その中のボタンを押したら、アクティブな子ウィンドウから文字列を取得しある処理した結果をダイアログボックスのtextに表示したいと考えています。 今のところダイアログボックスを表示する所まで出来ています。 問題点は 1.アクティブな子ウィンドウのハンドルはどのようすれば取得できるのでしょうか? 使用すべき関数名等を教えてください。 2.アクティブな子ウィンドウに記述されているデータを取得するには、GetWindowTextやsendMessageで出来るのでしょうか?(なるべくならSJISで処理をしたいと考えているのですが。) わかりずらい質問かも知れませんが宜しくお願いします。

  • ヘルプについて

    初めまして、質問させていただきます。 VisualStudio6.0を使用しているのですが、 VisualC++ではヘルプが使用出来ても、 VisualBasic6.0では 「MSDNのコレクションがありません」と表示されてしまいます。 再度インストールしなければいけないのでしょうか?? 解消するのはどうすれば良いか知っている方がいらっしゃいましたら宜しくお願い致します。

  • SDIウィンドウを動的に複数生成する方法

    ダイアログベースのアプリケーションに配置したボタンを押すたびに、 SDIのウィンドウを動的に生成・表示したいと思っています。 しかし、なにをどうすればいいのかわかりません。 とっかかりでもよいので、なにかヒントが欲しいと思って質問します。 生成するSDIウィンドウには以下のような必要条件があります。 1.CMfcToolBarがある 2.CMfcRibbonStatusBarとスライダーバーがある。 3.独自に作成したCScrollViewクラスの派生クラスを使用する 4.1アプリケーション内で複数のSDIを生成する 開発環境 VC2010, WindowsXP よろしくお願いします。 <背景> 以前、CSingleDocTemplateを使用してウィンドウを作成しが、なぜかツールバーのボタンにUPDATE_COMMAND_UIがこない事が判明。 四苦八苦したが解決できないため、別アプローチを検討したいと思った。

  • ディスプレイ外のウィンドウ移動

    Windows XP ノートで自宅でデュアルディスプレイを使用していますが、現在移動先です。 あるアプリケーションをいつもセカンドモニタ上で使用していたのですが、ノートだけの画面で起動すると、メインウィンドウは画面上に表示されるのですが、アプリの子ウィンドウが表示されません。 おそらく、セカンドモニタ上の座標に配置されているのだと思うのですが、カーソルをディスプレイ外に移動できないため、表示される場所までウィンドウを移動できません。 子ウィンドウのため、タスクバーに格納することもできません。 ディスプレイ外の子ウィンドウを、現在のウィンドウ上に表示できるようにする方法はないでしょうか?

  • Windows7にVC++がインストールできない。

    Windows 7 Ultimate 64bit版を購入し、Vistaでは使用できなかったVisual C++ 6.0(VC++6.0)を、XP modeでインストールしようとしましたが、『VisualC++セットアップを開始します。お待ちください…』と出て、1時間程すると『セットアップの初期化エラー セットアップを実行するには、メモリかディスク領域が足りません。このセットアッププログラムには約2000KBの空きディスク領域が必要です。 開いているアプリケーションをすべて閉じるか、Windowsを再起動するか、またはディスク領域を解放してみてください。』となりインストールできません。メモリを4GB→8GBにメモリを増設しましたが、症状は同じです。

  • VC関数localtimeに成り代わる関数ってVBにありますか?

    お世話になっております。 VisualStudio6.0を使用しております。 UTCのLong型日時変数から 年月日時分秒を個別に取得したいのです。 VisualC++ 6.0のlocaltimeのような関数を VisualBasicでも使用したいのですが、 同様の関数はVBに存在しますでしょうか? ご存知の方がいらっしゃいましたら、 ご教授のほど、何卒よろしくお願いいたします。