• ベストアンサー

フォームのコントラスト

フォームのコントラスト(?)を変えることはできますか? フォーム1からフォーム2をShowDialogで開いた時に、 フォーム1の画面全体のコントラストを変更したいと思っております。 環境はVB2008です。 よろしくお願いいたします。

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

可能か不可能かで言えば、WindowsAPIを使えば可能ではある。 ただ、OSの管理領域(=ノンクライアント領域)、つまりタイトルバー、最大化、最小化ボタン、ウィンドウ枠等をいじる事は不具合の元なのでやらない方が良い。 OSの管理領域なので任意のタイミングで再描画されるため、勝手に元に戻りイベントも通知されない。 いつ書きかえられても良いように、タイマーで常にコントラストを落とした画面に描画し続けるか、ノンクライアント領域の再描画メッセージをフックするかしなければならない。 言わばOSの管理領域の管理の奪い合いをすることになる。 不具合必至。 普通は、そのような事をしたい場合、最初からタイトルバー等はOSの管理に任せずに(タイトルバー等を非表示に設定)、タイトルの表示、最大化、最小化ボタンは自前処理する方法を選びます。 あるいは、複数のフォームを使用せず(フォーム2をダイアログとして出すのではなく)、同じウィンドウ内でコンテナコントロール(パネルなど)を表示、非表示でポップアップを表現する対応もあります。 (※その場合ウィンドウ全体のコントラストを下げるのではなく、ウィンドウ内部の領域で、ポップアップしたパネル以外をコントラストを下げるようにします) 個人的な好みですが、使用者側から見ると後者の方がお奨めです。 また、両方を組み合わせる(タイトルバーも含めてデザインにこだわる事が可能)事もあり得ます。

関連するQ&A