![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Такая ситуация :
Нужно что бы в эдите под текстом быллюбой фон. что делаем : Обрабатываем WM_CTRLCOLOREDIT и там кроме того что ствим транспарент тексту и возвращаем NULL_BRUSH рисуем на HDC, то чего нам хотелось бы. Но ... Все бы хорошо для коротеньких эдитов, в случае же с длинным, он при Update перерисовывает не все часть а кусочек. А арисовываю -то я все. Варивант на апдейте или кейдауне вызывать invalidate - не предлагать т.к. 1. Страшно мерцает 2. Непонятно как поймать моент выделения текста (хотя можно с маусе мове поигратся Тут все бы решалось легко, если бы в WM_CTRLCOLOREDIT можно было бы понять какой кусок он собирается перерисовывать (для какого кусочка брашь хочет). GetClipRect для пришедшего туда HDC не помог. Спасибо за любую инфу. Добавлено @ 15:53 Еще я OnPaint перегрузила, что бы родителя не вызывал. Я сейчас на MFC -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Попробуй перехватить WM_ERASEBKGND, и сама закрашивать чем хочешь.
Или, если уж перегрузила OnPaint, вообще заблокируй OnEraseBkgnd (ничего не делай, но возвращай true). А все сама рисуй в OnPaint... Хотя не факт, что во время выделения OnPaint посылается... с чем-то таким я сталкивалась... Только не поняла, почему ты NULL_BRUSH возвращаешь? Вроде нужно возвращать нормальный браш, а уж оно само закрасит... И зачем самой рисовать, если только фон поменять надо? -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Earnest, C паинтом и WM_ERASEBKGND - не получается, т.к. я так и не поняла, где же этот гад все-такие рисут. Как бы не непосредственно по апдейту.
У меня, к примеру, эдит лежит на чем-то пестриком, мне надо что бы он просто слегка его затенял. Поэтому я пестренкое перерисовываю и теньку на него накладываю. В общем все аккуратненько надо сделать. Однотонную кисть это не проблема. А вот че покрасивше, фиг сделаешь :'( -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
используй RichEdit, он посылает уведомление EN_SELCHANGE. Если не получится, то пробуй рендерить текст вручную с помощью EM_FORMATRANGE. Этот рендеринг прозрачный, так что можно на заднем фоне предварительно рисовать что хошь. Единственный минус - Units are measured in twips.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |