Delphi 7で、ソフトウェアのタイトルバーの色をウィンドウテーマから変更しようとしています。すべてのプログラムのすべてのタイトルバーを変更できるコードを見たことがありますが、プログラムを変更したいだけです。
誰かがこのようなことを見たり、したりしましたか?必要に応じてコンポーネントの料金を支払ってもかまいません。
Windowsは、タイトルバーを含むウィンドウフレームをペイントする必要があるときに、アプリケーションにWM_NCPAINTメッセージを送信すると思います。デフォルトの動作は、デフォルトのフレームを描画するデフォルトのWindowsハンドラーにフォールバックすることです。これを置き換えるか、直後にタイトルバーセクションを再ペイントすることができます。
これは良い例のように見えます:http://delphi.about.com/od/adptips2006/qt/draw_captionbar.htm
Stijnによる回答は完全ではありません。ウィンドウのキャプションと境界線も、(非)アクティブ化されたときに再描画されるためです。したがって、あなたに加えて、WM_NCPAINTも処理する必要がありますWM_NCACTIVATE。残念ながら、これは単純に置き換えることはできません。デフォルトのメッセージハンドラーには、実行する必要のある他のコード(描画コード以外)があるためです。ただし、デフォルトハンドラーを呼び出すと、デフォルトのキャプションと境界線が最初に描画され、次に目的の色で描画する必要があり、ちらつきが発生します。
これを回避する1つの方法は、デフォルトのメッセージハンドラーが呼び出される描画領域を調整することです。Delphiに簡単に変換できるWindowsAPI呼び出しを使用した例については、「テーマを使用してXPでタイトルバーを描画する」を参照してください。これはキャプションバーのテキストのみを扱いますが、原則が適用されることに注意してください。
スキニングライブラリをご覧ください。 DevExpressによるExpressSkinは良いものです。