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-themeing下有没有其他方法可以控制控件的文本颜色?还是我现在需要考虑 ownerdraw :-( ?

(并且所有者绘制实际上不是一种选择 - 如果我拥有所有控件,那么首先切换到通用控件 6 的整个动机就会消失)。

4

0 回答 0