В элементе stati c почему текст окружен жестким прямоугольником? - PullRequest
3 голосов
/ 08 января 2020

Я использую элементы управления stati c для записи в окне. Обычно я сохраняю фоновый цвет белым, и достаточно было установить цвета моих элементов управления stati c в сообщении WM_CTLCOLORSTATI C (запись черным, фон белым). Теперь, чтобы придать более современный вид, я пытаюсь использовать цвет DKGRAY для окна и элементов управления stati c и писать белым цветом:

case WM_CTLCOLORSTATIC:
    HDC hdcStatic = (HDC)wParam;
    SetTextColor(hdcStatic, RGB(255, 255, 255));
    SetBkColor(hdcStatic, DKGRAY_BRUSH);
    return (INT_PTR)GetStockObject(DKGRAY_BRUSH);

Он работает почти нормально: - Цвет текста белый: хороший - фон элементов управления stati c темно-серый: хороший - НО текст написан внутри жесткого черного прямоугольника: что это за плотный прямоугольник, окружающий текст ??? ? Откуда это взялось ? Как я могу изменить его цвет?

enter image description here

для информации, вот пример создания элемента управления stati c в сообщении WM_CREATE Главное окно:

    hsStatic1 = CreateWindowEx(0, L"STATIC", L"Fichier :", WS_CHILD | WS_VISIBLE, 15, 5, 60, 20, hWnd, (HMENU)ID_STATIC1, (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE), nullptr);

Спасибо.

1 Ответ

1 голос
/ 08 января 2020

DKGRAY_BRUSH - это магическое значение c для GetStockObject, это не цвет RGB, который вы можете передать SetBkColor().

Вам необходимо указать значение RGB DKGRAY_BRUSH и используйте это при вызове SetBkColor(), или выберите значение c RGB для использования и создайте свой собственный bru sh, используя CreateSolidBrush.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...