3

私は、WM_CTLCOLORSTATIC、WM_CTLCOLORBTN メッセージを使用して、ダイアログのスキニングを行ってきました。

case WM_CTLCOLORSTATIC:
case WM_CTLCOLORBTN:
  hdc = (HDC)wParam;
  hwndCtl = (HWND)lParam;
  SetTextColor(hdc,RGB(0xff,0xff,0xff));
  SetBkMode(hdc,TRANSPARENT);
  pt.x = 0;
  pt.y = 0;
  MapWindowPoints(hwndCtl,_hwnd,&pt,1);
  x = -pt.x;
  y = -pt.y;
  SetBrushOrgEx(hdc,x,y,NULL);
  return (INT_PTR)_skinBrush;

このコードは、背景ブラシが低コントラストの画像を描画するため、すべての静的要素のテキストの色を白に設定します。

Ive (だけ) 最近、ダイアログで Common Controls 6 と XP-Themeing の外観を使用するように更新しましたが、コントロールのすべてのテキストは、デフォルトの黒で再び描画されるため、「消えて」しまいました。

XPテーマの下でコントロールのテキストの色を制御する他の方法はありますか? または、今 ownerdraw を考慮する必要がありますか :-( ?

(そして、所有者の描画は実際にはオプションではありません-すべてのコントロールを所有者として描画すると、最初に共通のコントロール6に切り替える動機全体が失われます)。

4

0 に答える 0