Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CEdit Background color 
:(
    Опции темы
rainbow86
Дата 6.3.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



smile


Как изменить цвет background'а в CEdit?
Чего-то я не нашел ничего. smile
PM MAIL   Вверх
Earnest
Дата 6.3.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Нужно обрабатывать сообщение WM_CTLCOLOREDIT.
А еще - поискать в форуме, было уже про это.


--------------------
...
PM   Вверх
rainbow86
Дата 6.3.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет



Цитата(Earnest @ 6.3.2006, 19:06 Найти цитируемый пост)
А еще - поискать в форуме, было уже про это.


Вот что я нашел на форуме:

Код

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;    
}



Но все таки это не совсем то. Здесь edit окрашивается в цвет кисти, но когда начинаешь печетать, под символами появляется белый фон, а где нет символов там остается цвет кисти. Мне же надо поменять цвет фона в edit'е. Пробовал SetBkColor(), но по моему он вообще ничего не делает????

PM MAIL   Вверх
Earnest
Дата 7.3.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



SetBkColor ничего не делает, если стоит SetBkMode (TRANSPARENT).
Попробуй SetBkMode не ставить, а вот SetBkColor вызови.


--------------------
...
PM   Вверх
rainbow86
Дата 8.3.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет




Я уже перепробовал и с SetBkMode (TRANSPARENT) и без, но все равно я не вижу никакого влияние SetBkColor(). Кто-нибудь знает как он работает???

smile
PM MAIL   Вверх
rainbow86
Дата 8.3.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.10.2005

Репутация: нет
Всего: нет




Эту проблему решил. Теперь появилась другая. Дело в том что мне нужно закрашивать edit когда у него нет фокуса. А он обновляется только тогда когда у него есть фокус или когда обновляется все окно.Когда фокус переходит в другое окно мне надо заставить его обновиться.

smile

Как правилней это сделать?
PM MAIL   Вверх
Earnest
Дата 9.3.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Есть такой метод Invalidate. Когда обновить окно, вызывай его. Или - для части окна - InvalidateRect.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.