12

私はこの質問に対する答えを知っているとほぼ確信していますが、私が見落としていることがあることを望んでいます。

特定のアプリケーションは、Windows XPで実行している場合でも、キャプションバーとボタンにVistaAeroのルックアンドフィールを備えているようです。(例として、GoogleChromeとWindowsLiveフォトギャラリーが思い浮かびます。)WinFormsからこれを実現する1つの方法は、ボーダレスフォームを作成し、キャプションバー/ボタンを自分で描画してから、オーバーライドWndProcして移動、サイズ変更、ボタンをクリックすると、本来の機能が実行されます(詳細はわかりませんが、ドキュメントを読む日があれば、おそらくそれをやめることができます)。見落としている別の簡単な方法があるかどうか知りたいです。 。おそらく、私が見落としていたAPI呼び出しやウィンドウスタイルはありますか?

Googleは、Chromeで独自のウィンドウをロールするアプローチを使用して私に答えてくれたと思います。誰かが新しい情報を持っている場合に備えて、私は別の日に質問を開いたままにしておきますが、私は自分で質問に答えたと思います。

4

6 に答える 6

11

アプリケーションで独自のカスタム「クロム」を使用する方法に関する完全なコード サンプルを含む記事を次に示します。

http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

これは本当に良いもののように見えます。このシリーズには全部で 3 つの記事があり、Vista でも快適に動作します。

于 2008-09-20T04:26:36.607 に答える
5

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テーマを魔法のように有効にする方法を誰かが見つけられない限り、これが質問に対する答えですが、明らかに自分の投稿を答えとしてマークすることはできません.

于 2008-09-04T18:26:09.090 に答える
4

オーウェン、私はXPでChromeを使用していますが、Chromeウィンドウに「VistaAero」ガラスのテーマが表示されません。青一色に見えます。

必要なコントロールとウィンドウのタイトルバーのカスタムテーマであれば、それを実現できます。まさにそれを行うWinForms用の優れた無料のUIツールキットがあります:KryptonToolkit

于 2008-09-05T21:26:53.000 に答える
0

いいえ、残念ながら、これを行う簡単な方法は他にありません。

あなたは正しい軌道に乗っています。カスタム Winform を作成してから、この例に示すように進める必要があります。

于 2008-09-03T20:17:03.623 に答える
0

Google Chrome は Windows Vista SDK を使用して、XP でガラスの外観を実現します。ここからダウンロードできます:

http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065&displaylang=en

これを使用して、XP で Glass Effect を取得するには、次の DLL の遅延読み込みを有効にする必要があります。

  • uxtheme.dll
  • dwmapi.dl
于 2008-09-03T22:43:35.597 に答える
0

@Jonathan Holland: これは .NET から実行できるものですか?

はい、DllImport を使用します。ここに良いブログ記事があります

于 2008-09-04T01:36:58.923 に答える