1

私は奇妙な問題を抱えています(まあ、少なくとも私はそれが奇妙だと思います=))。Windows APIのラッパーである独自のGUIライブラリを作成しています(はい、MFC =)のようなWTLとフレームワークを認識しています)。現在の段階では、このような方法で一般的なコントロールをカプセル化しました。たとえば、 Edit クラスは、単純なウィンドウとその上にある標準の編集ウィンドウ ( MainWindow -> GhostWindow -> EditBox ) で構成されます。たとえば、編集クラス自体の編集の背景色を変更する方法は次のとおりです。

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

そして、InitCommonControlsExを呼び出してマニフェストファイルをプログラムに添付するまで、うまくいきました。これを行った後、私の編集は、フォーカスがある場合にのみ色を変更できるようになります。正直なところ、なぜこのように動作するのか、何が間違っているのかについて包括的な考えを持っていないので、助けていただければ幸いです。

#535 さん、ありがとうございます。

4

2 に答える 2

0
  1. バージョン6のマニフェストを添付すると、InitcommonControlsExの呼び出しは不要になります。

  2. ともかく。バージョン6の共通コントロールがロードされているため、標準のWindowsコントロールでもXPテーマが使用されます。コントロールの背景色はxpテーマの色を使用してペイントされるため、WM_CTLCOLOR*メッセージの使用量は少なくなります。

  3. 現在、WM_CTLCOLOR *メッセージを使用して、さまざまな制御要素のクーラーをオーバーライドしていますか?

于 2009-10-26T05:13:09.513 に答える
0

まあ、私が思っていたよりも、すべてがずっと簡単です。私はあまりにも不注意でした =( スタイリングを使用しない場合は、::SetBkColor(...) を使用して背景色を変更し、WM_CTLCOLOR* からブラシを返して境界線の色を変更します。スタイリングを有効にすると、状況が異なります。 . 現在、::SetBkColor(...) はフォーカスカラーに対応し、ブラシを返すと背景色が変更されます。

于 2009-11-06T08:39:55.317 に答える