WinAPI:设置只读文本框的填充颜色

时间:2013-03-12 20:15:33

标签: winapi colors textbox readonly fill

我的程序winapi(C ++)差不多完成了。现在的问题是我想设置文本框的填充颜色,该文本框是只读的。当我将该文本框设置为只读时,我无法将其填充为白色。当我不这样做时,它可以充满白色。 这就是我创建文本框的方式:

CreateWindow(L"EDIT", text, WS_CHILD|WS_VISIBLE|WS_BORDER|ES_READONLY|ES_RIGHT, left, top, width, height, hWnd, (HMENU)ID, hInst, NULL)

此代码在WinProc中:

case WM_CTLCOLOREDIT:
        SetTextColor((HDC)wParam,RGB(0,0,255));
        SetBkColor((HDC)wParam,RGB(255,255,255));
        SetBkMode((HDC)wParam, TRANSPARENT);
    return (LRESULT)GetStockObject(WHITE_BRUSH);

2 个答案:

答案 0 :(得分:1)

您需要将WM_CTLCOLORSTATIC用于只读文本框;请参阅WM_CTLCOLOREDIT的文档。

答案 1 :(得分:0)

根据HerrJoebob的解决方案,但你需要区分静态和编辑:(未经测试的代码,但想法就在那里)

case WM_CTLCOLORSTATIC:
{
TCHAR senderClass[256] ;
GetClassName((HWND)lParam, senderClass, 256);
if (_tscmp(senderClass, WC_EDIT)
  {
  //Code to change the colour of edit controls
  }
}
break;