アプリケーションのウィンドウのキャプション バーを自己描画したいので、OnNcPaint() メソッドをオーバーライドすることにしました。しかし、キャプション バーの高さを変更する方法がわかりません。GetSystemMetrics(SM_CYCAPTION) を使用するたびに、同じ値が返されます。
誰かがそれを行う方法を教えてもらえますか? ありがとうございました!
Windows で描画される通常のキャプション バーのサイズは変更できません。これは、ユーザー設定とテーマによって決まります。自分で物を描いている場合は、キャプションの寸法も自分で定義します。好きな場所に好きなようにペイントできるため、通常はクライアント領域と見なされる場所にキャプション バーをペイントできます。その余分な領域を実際にキャプション バーであるかのように動作させるには、wm_NCHitTest
メッセージを処理して を返しhtCaption
ます。
GetSystemMetrics
パラメータの 1 つとしてウィンドウ ハンドルを受け入れないことに注意してください。つまり、ウィンドウ固有のメトリックを返すことはできません。その名前が示すように、システム全体のメトリックを提供します。
キャプションをいじる代わりに、まったく使用しないでください。代わりに、独自のキャプションを「発明」してください。TPanel をウィンドウの上部に配置するように設定し、それをそのウィンドウのキャプションとして使用します。