Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не обновляется информация на прозрачном Edit-е 
:(
    Опции темы
piritus
Дата 1.9.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Приветствую.
Создал диалог, на него кинул плоский EditBox.
Обрабатываю сообщение WM_CTLCOLOREDIT:
Код

SetBkMode(wParam,TRANSPARENT);
SetTextColor(wParam,RGB(165,85,42));
return GetStockObject(NULL_BRUSH);

Пишу что-нибудь в edit-е:
user posted image

нажимаю 2 раза Backspace:
user posted image

Ввожу "123":
user posted image

Т.е. каретка переводится, символы удаляются, но на экране они остаются.
Такое свойство наблюдается только при установке прозрачности EditBox-а:
Код

SetBkMode(wParam,TRANSPARENT);


Пробовал вызывать UpdateWindow с хендлом edit-а, но не помогает.

Подскажите, пожалуйста, решение.
--------------------
PM MAIL ICQ   Вверх
GremlinProg
Дата 7.9.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



это не прозрачность, это опять невосстановление фона, как и в случае с WM_ERASEBKGND (в пред. теме)
а символы тут удаляются, как положено


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
piritus
Дата 7.9.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так понимаю, что нужно:
Код

case WM_PAINT:{
...
    ::SendMessage(hWnd,WM_PRINTCLIENT,(WPARAM)hdc,PRF_CLIENT);
...
case WM_PRINTCLIENT:{
....
    ::SendMessage(::GetAncestor(hWnd,GA_PARENT),WM_ERASEBKGND,(WPARAM)hdc,0);
....
case WM_ERASEBKGND:{
    return TRUE;


Так?
И вот тут еще кое что нашел:
http://forum.vingrad.ru/topic-113380.html
Это к моему вопросу отношение имеет?
--------------------
PM MAIL ICQ   Вверх
GremlinProg
Дата 7.9.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



Цитата(piritus @  7.9.2009,  21:18 Найти цитируемый пост)
Так понимаю, что нужно

да, примерно так, если подразумевается прозрачность в цепочке:
родитель - ребенок(Edit),
или пра-родитель - родитель - ребенок(Edit) и т.д.,
но не десктоп(план с чужими окнами) - ... - ребенок(Edit) [этот случай мы уже разобрали]

причем поддержку WM_PRINT/CLIENT нужно делать во всех промежуточных компонентах (всех родителях), если требуется "просвечивать" их все
Цитата(piritus @  7.9.2009,  21:18 Найти цитируемый пост)
И вот тут еще кое что нашел:http://forum.vingrad.ru/topic-113380.htmlЭто к моему вопросу отношение имеет?

да, конечно относится, если не хочешь, чтобы весь этот прозрачный "организм" перемаргивал,
но, в принципе, пример из темы о прозрачности решает эти проблемы,
т.е. это воплощение того плана непосредственно в коде (двойной буфер с WM_PRINT)


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
piritus
Дата 8.9.2009, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ок, буду пробовать.
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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