WinForms アプリのカスタム タイトルバー/クロム
-
09-06-2019 - |
質問
この質問に対する答えはほぼ確実にわかっていますが、見落としている点があることを願っています。
特定のアプリケーションは、Windows XP で実行している場合でも、キャプション バーとボタンに Vista Aero の外観と操作感を備えているようです。(例として、Google Chrome と Windows Live フォト ギャラリーが思い浮かびます。) WinForms からこれを実現する 1 つの方法は、ボーダーレス フォームを作成し、キャプション バー/ボタンを自分で描画してからオーバーライドすることであることはわかっています。 WndProc
移動、サイズ変更、ボタンのクリックが意図したとおりに動作することを確認するためです (詳細はわかりませんが、ドキュメントを読むのに 1 日あればおそらくなんとかできるでしょう)。別の方法があるかどうか興味があります。私が見落としているもっと簡単な方法。おそらく API 呼び出しやウィンドウ スタイルが見落とされているのではないでしょうか?
Google は、Chrome のロールユアオウン ウィンドウ アプローチを使用して、この問題に答えてくれたと思います。誰かが新しい情報を持っている場合に備えて、質問は別の日まで開いたままにしておきますが、私は自分自身で質問に答えたと信じています。
解決
アプリケーションで独自のカスタム "chrome" を使用する方法に関する完全なコード サンプルを含む記事を次に示します。
http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx
これは本当に良いもののようです。このシリーズには合計 3 つの記事があり、Vista 上でも快適に動作します。
他のヒント
Google Chromeは ない XP でこれを実現するには、Vista SDK を使用します。覗いてみたら src\chrome\browser\views\frame
システムの機能に応じて、ブラウザ フレームを定義するファイルがいくつかあります。XPでは次のようになります OpaqueFrame
使用されている;19行目にはこんなことが書いてあります。
// OpaqueFrame
//
// OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
// OpaqueNonClientView provides the window frame on Windows XP and on Windows
// Vista when DWM desktop compositing is disabled. The window title and
// borders are provided with bitmaps.
のリソースを使用しているようです src\chrome\app\theme
フレームボタンを描画します。
したがって、XP で Vista テーマを有効にする何らかの安価な方法があるという私の希望は打ち砕かれたようです。これを行う唯一の方法は、ウィンドウの非クライアント領域を手動で描画することです。私は信じている このようなもの これは、ウィンドウの移動やサイズ変更など、クライアント以外の処理を Windows が処理できるようにするため、おそらく正しい方法です。
XP で Vista テーマを魔法のように有効にする方法を誰かが見つけられない限り、これが質問に対する答えですが、明らかに自分の投稿を答えとしてマークすることはできません。
オーウェン、XP で Chrome を使用していますが、Chrome ウィンドウに「Vista Aero」ガラス テーマが表示されません。青一色に見えます。
コントロールと Windows タイトル バーのカスタム テーマを希望する場合は、それを実現できます。まさにそれを行う、WinForms 用の優れた無料 UI ツールキットがあります。 クリプトンツールキット
@ジョナサン・ホランド:これは.NETから実行できるものですか?
はい、DllImport を使用します。 ここ 良いブログ投稿です
Google Chrome は Windows Vista SDK を使用して、XP でガラスのような外観を実現します。ここからダウンロードできます:
これを使用して、XP でガラス効果を取得するには、次の DLL の遅延読み込みを有効にする必要があります。
- uxtheme.dll
- dwmapi.dl
いいえ、申し訳ありませんが、これを行う他の簡単な方法はありません。
あなたは正しい道を進んでいます。カスタム Winform を作成し、次に示すように続行する必要があります。 例.