6

一般に、このようなシステム設定を台無しにすることは避けなければならないことはわかっていますが、私のアプリケーションではすでに非標準の色が使用されており、私はそれに影響を与えていません。いくつかの場所に標準の .NET コントロールを追加できるようにしたいのですが、それらの色が一致しません。この 1 つのアプリケーションのシステム カラーを置き換えるハックが必要です。注意すべきもう 1 つの重要な点は、これが .NET アプリケーションであることです。

これまでの私の(不完全な)アイデアは次のとおりです。

  • GetSysColor を置き換えてプロキシ User32.dll ライブラリを作成するには、非常に面倒です (731 個の関数をリダイレクトする必要があり、1 個を置き換える必要があります)。アプリケーションでその特定のコピーを強制的に使用する方法もわかりません。
  • GetSysColors への呼び出しを何らかの方法でインターセプトするには (残念ながら、CLR のどこかにあると思います)。
  • 何らかの方法で.NETクラスのSystemColorsを変更するには(メモリ内?可能ですか?)。

これを達成するための最良の(そして完全な)方法は何ですか?

4

3 に答える 3

4

いくつかの場所に標準の .NET コントロールを追加できるようにしたいのですが、それらの色が一致しません。この 1 つのアプリケーションのシステム カラーを置き換えるハックが必要です。

それはハンマーで釘を打つようなものです。

システム自体の色をいじる代わりに、使用したい各ストック コントロールから新しいコントロールを継承することができます。したがって、プレーンな TextBox の代わりに、ストック TextBox コントロールから継承して独自のThemedTextBox. デフォルトでアプリの配色を使用するようにこの新しいコントロールをセットアップします。継承構造に関する限り、それは依然として TextBox であるため、winforms デザイナーを含め、通常のテキスト ボックスを使用する場所ならどこでも使用できます。

于 2009-07-07T12:49:08.220 に答える
2

初期の頃、オーナーがウィンドウの境界線を描画するためのグローバル メッセージ フックを登録するプログラムを開発しました。すべてのウィンドウにテーマを設定できました。これは、単一のアプリケーションでも可能です。ただし、これは簡単な作業ではありません。

そうでなければ、私はこれが可能になるとは思わない。Krypton Toolkitなどのテーマ設定可能なサードパーティ製コントロールを使用するのはどうですか?

于 2009-07-07T12:26:52.940 に答える