Win32APIでウィンドウ内のレイアウトを変更

このQ&Aのポイント
  • Visual C++ 2008でウィンドウ内のレイアウトを変更する方法について
  • ウィンドウ内のレイアウトを移動する機能を追加したくて質問です
  • ウィンドウ内を区切るバーを移動させてレイアウトを変更する方法はあるのでしょうか?
回答を見る
  • ベストアンサー

Win32APIでウィンドウ内のレイアウトを変更

Visual C++ 2008で,Win32APIを使い, キーボードショートカットでウィンドウを指定した場所へ配置するソフトウェアを実装しました. (Ctrl + Shift + T で現在のウィンドウ全部をタイリングする,などです) これ自体はSetWindowPosで簡単にできるのですが, ウィンドウ内のレイアウトを移動する機能を追加したくて今回質問いたしました. たとえばファイルエクスプローラは, 左側に縦長で フォルダの階層構造での表示領域, 右側に大きく 現在のフォルダの内容を表示する領域 があります. このレイアウトを,たとえば「左側の領域の横幅が130ピクセル未満であれば130ピクセルにする」などといった処理を行いたいです. 他にもウィンドウ内を区切るバーを持ったソフトがありますが(Visual Studioなど),これを移動させてレイアウトを変更する方法はあるのでしょうか? もしご存じの方がいらっしゃれば,ご教示いただければ幸いです. どうぞよろしくお願いいたします.

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.1

エクスプローラーの場合、左右は「split」と言う種類のウィンドゥオブジェクトがあって、その左右にあるウィンドゥオブジェクトは、その「split」に追従してサイズ変更、位置変更するようになっています。 なので、splitオブジェクトの「ウィンドゥハンドル」を取得して、そのウィンドゥハンドルに対し、位置変更を指示すれば、スプリットバーの位置が変わります。 また、スプリットバーの左にある「左に関連付けされたウィンドウ」のサイズを変えれば、自動的にスプリットバーの位置、右ウィンドウのサイズが変わります。 同様に、スプリットバーの右にある「右に関連付けされたウィンドウ」のサイズを変えれば、自動的にスプリットバーの位置、左ウィンドウのサイズが変わります。

sadaharu11295
質問者

お礼

まだうまくやることができないのですが,もうちょっと頑張ってみたいと思います.どうもありがとうございました.

関連するQ&A

  • Windows10のファイル表示画面のレイアウト

    お世話になっております。 私は現在ある業務の関係で無理やりWindows10というOSを使わされています。 このOSでエクスプローラーなどを利用してファイル構成を開くときに、表示レイアウトが変更できなくて、大変困っております。 Windows7までは、レイアウト上部のファイル名表示の領域等をマウスのポインターで敷居の場所を左右に移動させることができて、ファイル名等の表示領域を任意で大きくできてよかったのですが、このWindows10という愚かなスパイウェアはそのような任意でのファイル名表示領域の拡大オプションがありません。 どのようにすれば、このWindows10でファイル名表示領域を広げることができますか? 教えてください。 宜しくお願いいたします。

  • Windows7のエクスプローラのフォルダを固定?

    Windows7のファイルマネージャー的な方のエクスプローラーの 左側にフォルダ階層表示をしているときに、下位に向かってフォルダを開いていくと 左側の階層が勝手に上下に動いてイライラしています。 開いた階層がウィンドウの一番下まで勝手に下がり、その下位のフォルダが ウィンドウの外になって隠れてしまいます。再度スライダーバーを動かして 階層を上に上げて見えるようにするか、右側の一覧からフォルダをダブルクリック してフォルダを開かなければなりません。 左側のフォルダ階層表示を固定するレジストリの変更方法や、ソフトはないでしょうか。

  • ウィンドウの移動

    Win32 APIで、ウィンドウに文字(時間)を表示させているのですが、 チラつくので、「Sleep()」を使っています。 ですけど、ウィンドウを移動させる時にウィンドウの移動が カクカクするのですがどうすればいいのでしょうか。 Visual Studio 2005を使っています。

  • C++(API)で

    C++(API)でクライアント領域にボタンを貼り付けるところまではできるのですが・・・そのボタンを押すと新しいウィンドウを表示させるにはどうしたらよろしいのでしょうか?

  • Windows API を使ってファイルをごみ箱に入れるには?

    Windows でファイルを削除するのに DeleteFile() を使うのではなく, ごみ箱へ移動させるにはどうしたらよいのでしょうか? Visual Studio 2003.NET のオンラインヘルプのあるページには, 「ごみ箱は Windows95 以降のシェルアプリケーションの機能」とあったので, "Shell Functions" のページを見たところ, SHEmptyRecycleBin() および SHQueryRecycleBin() しか記載されていません. この2つの API があるくらいなら,「ファイルをごみ箱に移動する」API も あってよさそうなものですが,ないのでしょうか. ShellAPI.h を "Recycle" で検索しても上記の2つの関数しか見つかりません. 他のヘッダファイルも "Recycle" で検索しましたが見つかりません.

  • MFCを使用した分割ウィンドウエディタの実装

    CSplitterWndクラスを使用して、分割ウィンドウエディタを作成 しようと思っています。 作成するエディタのイメージとしては、Visual Studioのメイン画面や Windowsのエクスプローラ(左側にフォルダツリー、右側に ファイル一覧)のようなレイアウトです。 上記で記載したアプリのように、ペイン毎の画面の 表示/非表示(閉じる)を切り替え可能にしたいのですが 具体的な実現方法が思い浮かびません。 CSplitterWndのCreateStaticメソッドを使用して、静的な 分割レイアウトを定義しておいてから上記に記載した機能を 実現したいのですが、実現可能なのでしょうか。 ネット&過去質問を調べてみたのですが、具体的な実装方法を見つけられなかったもので。。。 よろしくお願い致します。 ※以下開発環境になります。  ●開発OS/SoftWare   Windows XP Pro(SP2) / Visual C++ 2008

  • 筆まめのレイアウト枠について

    WINDOWS VISTAマシンに筆まめ18をインストールし、アップグレードもしました。 レイアウト画面のハガキの宛名、住所、氏名などの青いレイアウト枠が左にすべて寄ってしまい、すべてがハガキの左側に表示されてしまいます。この青いレイアウト枠を移動させようとしても、移動できません。 ソフトをアンインストールし再度インストールしてもかわりません。 解決方法を教えてください。

  • api-ms-win-core…libがないため…

    こんにちは。 Windows7(SP1)にて、とあるプログラムを動かそうとした際、 「コンピューターに api-ms-win-core-libraryloader-l1-1-1.dll がないため、プログラムを開始できません。」 とエラー表示され、プログラムが起動できません。 ネットで調べ、「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」もインストールしてみたのですが、状況は変わらず。 後何を試せばよろしいでしょう? よろしくお願いいたします。

  • ウィンドウを常に一番後ろに表示するには

    こんばんは。UNKOです。ウィンドウを常に一番後ろに表示したいのですが、出来るのでしょうか。この逆でウィンドウを常に一番前に持って来るのは、API関数のSetWindowPosで出来ますよね。この関数の引数の値を変えればいいのでしょうか…。それか別関数であるのでしょうか…。どなたかアドバイスお願い致しますm(__)m

  • WIN32APIで動画を読み込もうとしましたが…

    Microsoft visual studio2005のC言語(ウインドウアプリケーション)で動画呼び出しのプログラムを作成して、ビルドもできたのですが開始すると動画が表示せず、 真っ白なウインドウが表示しただけになってしまいます。 呼び出される動画は、Debugフォルダに入れています。 mciSendString( _T("open homerun2.avi type avivideo alias test"), NULL, 0, NULL ); このように命令しているのですが… 動画はWMPで作動するAVIファイルです。

専門家に質問してみよう