2011-01-27 17 views
3


MDIコンテナに複数の最小化されたウィンドウがある場合、それぞれを再作成しない限り区別することはできません。キャプション内のテキストに6文字を含めることができるように、最小化されたウィンドウを少し広くすることが可能かどうか疑問に思っていますか?
ありがとうございます!MDI C#Winformsで最小化されたウィンドウのサイズを変更することは可能ですか?

+0

そう思わない。 – hungryMind

+0

回避策はありますか?マウスを最小限に抑えた状態でツールストリップを表示することは可能ですか? – StuffHappens

+0

「ツールストリップ」とは、「ツールチップ」を意味すると思いますか?そして、はい、それはオプションですが、非常にエレガントなものではありません。または、開いているすべてのウィンドウをフルネームで一覧表示する(またその切り替えも可能な)「ウィンドウ」メニューを使用するように教えることができます。 –

答えて

6

いいえ、これはできません。 Windowsは、現在のシステムパラメータを使用して最小化されたウィンドウの幅を決定します。システム全体の値を変更せずに、単一のアプリケーションに対してこれを動的に変更する方法はありません。

特に、最小化されたすべてのウィンドウのデフォルトサイズは160x31です。 MDIアプリケーションでは、ウィンドウがWindowsタスクバーではなくMDIホストに最小化されるため、実際にこのサイズが表示されます。 Raymond Chen(MicrosoftのWindows Shellチームの開発者)は、この特定のサイズが選択された理由とその意味を説明するブログエントリを数回掲載しました。最初は、ここに提供されています:Why do minimized windows have an apparent size of 160x31?そして第二に、フォローアップのエントリはここで読むことができます:No, really, why is it 160x31?彼はその第2のポストで説明したよう:

ミニチュアタイトルバーの幅はMINIMIZEDMETRICS構造のiWidthメンバーによって決定されます。 SystemParametersInfo関数の助けを借りて、この構造体を取り出して変更することができます。 (それぞれSPI_GETMINIMIZEDMETRICSフラグとSPI_SETMINIMIZEDMETRICSフラグを使用してください)。MinWidthというレジストリ値が記載されている人もいますが、間違っています。たとえば、MinWidthを使用すると、ログオフサイクルが必要になりますが、SPI_SETMINIMIZEDMETRICSを使用するとすぐに有効になります。これは、SPI_SETMINIMIZEDMETRICSが内部状態変数を更新するのに対し、レジストリを壊すことは、ログオンしても誰も注意を払わないデータベースの値を変更するだけだからです。

高さはどうですか?これはキャプションバーの高さにすぎず、ディスプレイコントロールパネルの[外観]タブから調整できます。 (プログラム、あなたはNONCLIENTMETRICS構造のiCaptionHeightメンバーを使用して、今回その有用SystemParametersInfo機能を使用することができます。)


を、私は、ユーザーが本当にあなたが/ Pにより、デフォルトのシステム・パラメータをいじって起動したい疑うので、 SystemParametersInfo function、あなたはたくさんのオプションが残っていません。特に、一度に1つのウィンドウで作業し、他のウィンドウを最小限に抑えたままにしておけば、別のインターフェイスに切り替えることをお勧めします。 MDIの目的は、複数のウィンドウをタイルまたはカスケードして、一度に複数のウィンドウを表示できるようにすることでした。典型的なユースケースではないように聞こえるので、代わりにタブを使用するようにアプリケーションを切り替えることで、両方の方が優れたサービスを提供できるかもしれません。これは、しばしばというタブ付きドキュメントインターフェイス(TDI)と呼ばれ、古いMDI(多ドキュメントインターフェイス)のやや現代的な実装です。これは長年にわたり非常に人気が高まっています。 Wikipedia articleをチェックしてください。

関連する問題