Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WM_DRAWITEM, Для кого? 
:(
    Опции темы
Coocky
Дата 2.2.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Вот не пойму,для кого нужно использовать сообщение?Ведь для многих достаточно перегрузить виртуальную функцию DrawItem() ?Может это нужно(можно) применять к тем элементам ,у кого нет этой функции(для кого нельзя перегрузить)?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
chipset
Дата 2.2.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Как ты перегрузишь DrawItem в Win32Api? smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Coocky
Дата 2.2.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Пардон,я не св той теме создал топик.Я про МФС smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
srd
Дата 2.2.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



А MFC есть враппер для API. Как ты думаешь, когда виртуальный метод DrawItem вызывается? Когда в MFC-шную оконную процедуру прийдет сообщение WM_DRAWITEM.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Coocky
Дата 3.2.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата
А MFC есть враппер для API. Как ты думаешь, когда виртуальный метод DrawItem вызывается? Когда в MFC-шную оконную процедуру прийдет сообщение WM_DRAWITEM.

smile
Да вопроса не поняли!!!!!!
Когда вместо виртуальной функции нужно регистрировать сообщение и обрабатывать!В каких случаях!

Это сообщение отредактировал(а) Coocky - 3.2.2005, 17:10


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
srd
Дата 3.2.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



Желательно писать обработчик сообщения только в том случае, если используемый класс не имеет соответствующую виртуальную функцию-член, так как реализации этой функции в предках или реализации обработчика сообщения в предках могут содержать дополнительную логику, которую можно легко сломать. Например, все потомки класса-вида имеют виртуальную функцию OnDraw, которая вызывается и при отрисовке (WM_PAINT) и при выводе на печать. В библиотечном классе-предке в обработчике WM_PAINT создаётся контекст устройства, а потом вызывается OnDraw. Если неаккуратно написать собственный обработчик WM_PAINT, то эта схема ломается.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Coocky
Дата 4.2.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Ладно,поясню не книжными словами smile
Дело в том,что это сообщение посылается владельцу окна,если элемент требует перерисовки.Для большинства это происходит при свойстве OwnerDrawFixed.
Однако давайте пойдем дальше.Как-то в одном из топиков про Маленькие тайны,МФС,я показывал ,как перерисовывается многие элементы.Для этого достаточно было перегрузить виртуальную функцию DrawItem() для класса элемента(хотя это можно сделать и в родителе).Ну учили меня в Академии так и учили.Так вот, в одном из топиков еще я писал,что что б расширить карту сообщений,достаточно создать для элемента потомка.Так вот,оказывается не все сообщения будут работать.WM_DRAWITEM-не будет никогда..WM_CTRLCOLOR-не будет никогда,оказывается нужно перегрузить виртуальную функцию OnChildNotify()..100% будут работать только отраженые сообщения-те,которые имеют знак = перед названием в Визарде.
К чему я это.Да просто хочу узнать может кто просветить,как и что в этом вопросе.Сколько проблем возникаетЮкогда пытаеся обработать сообщение,а его нет.Кто знает,когда нужно применять виртуальные функции,а когда досточно сообщения?



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
chipset
Дата 5.2.2005, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Я тебя окончательно не понял... Почему нельзя перегрузить DrawItem, в случае отсутствия ловить WM_DRAWITEM?
Но темку я перенесу smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Coocky
Дата 5.2.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



chipset
Цитата
Почему нельзя перегрузить DrawItem, в случае отсутствия ловить WM_DRAWITEM

Ее можно перегрузить,только для тех,кому можно smile
Там просто,в ответе,я писал (надо было лучше знаки препинания ставить smile ),что многие сообщения посылаются только окну владельцу.Но обрабатывать там неудобно(ну представь у тебя 20 элементов,и каждый нужно перекрасить smile )Это ж какой switch получиться!
А в своем классе это сообщение не обработать.Только через виртуальные функции.Так вот я хотел бы узнать-какие еще есть нюансы,по сообщениям?Я только знаю 2 - WM_DRAWITEM,и WM_CTRLCOLOR.Может какие еще надо обрабатывать перегрузкой?Ах да,еще WM_NOTIFY


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


 




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


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

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