私は、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に切り替える動機全体が失われます)。