Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Цвет контрола


Автор: h1t0n 8.5.2005, 20:40
Ребята, помогите! Как ищменить цвет контрола (кнопки)?

Автор: Fixin 8.5.2005, 20:52
Создаешь подкласс элемента управления (меняешь ему адрес главной процедуры на свой), в этой процедуре перехватываешь такие сообщения: WM_CTLCOLORxxx и тд. Вот их и надо обрабатывать. По моему так.

Автор: Guest 9.5.2005, 02:01
Так а как их обрабатывать? Я пробовал уже SendDlgItemText с мессагой SETCTLCOLORBTN - нифига. Пробовал SetTextColor - то же самое - ниче не получается

Автор: Fixin 9.5.2005, 10:18
Код

BOOL CALLBACK somewndproc(hwnd, Msg, wParam, lParam)
{
     switch(Msg)
    {
          case WM_CTLCOLORBTN:
          case WM_CTLCOLOREDIT:
          case WM_CTLCOLORSTATIC:
                return HANDLE_WM_CTLCOLORSTATIC(hwnd, wParam, lParam, Func_OnCtlColor);
    }
}
HBRUSH Func_OnCtlColor(hwnd, hdc, hwndChild, type)
{
    switch(type)
    {
        case CTLCOLOR_STATIC:
        case CTLCOLOR_BTN:
        case CTLCOLOR_EDIT:
            SetTextColor(hdc, RGB(0, 127, 0));
            SetBKMode(hdc, TRANSPARENT);
            return SomeBrush; //return NULL;
    }
    return SomeBrush2; //return NULL;
}

Автор: h1t0n 10.5.2005, 04:01
Я не нашел в WinAPI функцию HANDLE_WM_CTLCOLORSTATIC. Если это MFC-функция, то вариант не катит, т.к. я на асме пишу...

Автор: Fixin 12.5.2005, 18:17
Не, не МФС. Я его не люблю.
Добавлено @ 18:19
Этого нету в мсдн (вроде). Это макрос из <windowsX.h>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)