3

Vista または Win7 で Aero テーマを使用しているときに、ウィンドウのキャプション バーにカスタム ボタンを描画する方法を見つけようとしています。元のコードを変更せずに、これをさまざまなアプリケーションに適用する必要があるため、これはフック プロシージャになります。元のコードを変更できないため、DwmExtendFrameIntoClientArea を使用できません。

これを実行できるアプリを見たことがあるので、これを実行できるか、少なくともうまく偽造できると確信しています。この他のアプリの実行中にさまざまなウィンドウを詳しく調べましたが、ウィンドウ スタイルを変更したり、フレームをクライアント領域に拡張したりしているとは思いません。

テストとして、WM_NCPAINT メッセージを使用して、キャプション バーに何かを描画しようとしました。Aero テーマがアクティブな場合、ペイントしたものは何も表示されません。ウィンドウだけでなく画面全体の DC を取得した場合、キャプション バーに "ペイント" できますが、もちろん、実際には画面にペイントされています。そのアプローチにはあらゆる種類の問題があるため、うまくいきません。誰かが良いアイデアや良いヒントを持っていれば、助けていただければ幸いです!

4

1 に答える 1

0

クライアント領域を拡張することはできないため、フローティング子WS_EX_LAYEREDウィンドウを作成し、所有者を最上位ウィンドウに設定して、そのウィンドウの上にとどまるようにする方法があります。

WM_MOVEおよびWM_SIZEメッセージのターゲット ウィンドウの WndProc をフックできます。

于 2014-07-03T16:48:16.280 に答える