我一直在使用 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-themeing下有没有其他方法可以控制控件的文本颜色?还是我现在需要考虑 ownerdraw :-( ?
(并且所有者绘制实际上不是一种选择 - 如果我拥有所有控件,那么首先切换到通用控件 6 的整个动机就会消失)。