WinXp共通コントロールを使用するときの編集コントロールの背景色の奇妙な動作
-
06-07-2019 - |
質問
私は奇妙な問題を抱えています(まあ、少なくとも奇妙な問題があります=))。私はWindows APIのラッパーである独自のGUIライブラリを作成しています(そして、はい、WTLおよびMFC =のようなフレームワークを認識しています)。現在の段階で、私はそのような方法で共通コントロールをカプセル化しました。たとえば、Editクラスは、単純なウィンドウとその上の標準編集ウィンドウで構成されています(MainWindow-> GhostWindow-> EditBox)。これは、たとえば、編集クラス自体の内部で編集の背景色を変更する方法です:
myedit->SetBkColor ( RGB ( 0, 0, 0 ) );
InitCommonControlsExを呼び出し、マニフェストファイルをプログラムに添付するまで、問題なく動作しました。これを行った後、私の編集は、フォーカスがある場合にのみ色を変更できるようになります。正直に言うと、なぜこのように振る舞うのか、何を間違っているのかについて包括的な考えは持っていないので、助けていただけると助かります。
ありがとう#535。
解決 2
まあ、すべては思ったよりずっと簡単です。スタイリングを使用しない場合、杖は:: SetBkColor(...)を使用して背景色を変更し、WM_CTLCOLOR *からブラシを返して境界線の色を変更します。スタイリングを有効にすると、状況が異なります。:: SetBkColor(...)は focus 色に対応し、ブラシを返すと背景色が変わりますShame on me =(
他のヒント
-
バージョン6マニフェストを添付すると、InitcommonControlsExの呼び出しが不要になります。
-
とにかく。バージョン6の共通コントロールが読み込まれると、標準のWindowsコントロールでもXPテーマが使用されます。コントロールの背景色はxp-theme色を使用して描画されるため、WM_CTLCOLOR *メッセージの使用は少なくなります。
-
現在、WM_CTLCOLOR *メッセージを使用して、さまざまな制御要素のクーラーをオーバーライドしていますか?