2

プログラム 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);
4

2 に答える 2

1

WM_CTLCOLORSTATIC読み取り専用のテキスト ボックスに使用します。のドキュメントを参照してくださいWM_CTLCOLOREDIT

于 2013-03-12T20:47:55.280 に答える
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;
于 2014-09-16T14:47:19.947 に答える