Re: Еще раз про сабклассинг...
От: TepMuHyc  
Дата: 05.02.02 08:49
Оценка: 6 (1)
Здравствуйте KaSA, Вы писали:

KSA>Дык, вот, в DrawItem попасть не удается...почему? Где тут ошибка?

Ошибка в том, что WM_DRAWITEM посылается родительскому окну, а не самому контролу.
То есть сабкалссинг здесь, в общем случае, неприменим.

KSA>Помогите, кто знает!

Теперь о том кк выйти из этой ситуации.
Способ 1: Обрабатывать WM_DRAWITEM в родительском окне.
Это очень удобно если контрол "одноразовый" (т.е. такой который для непригоден
повторного использования).

Способ 2: Сделать вот так (хорошо для "реюзабельных" котролов):
//в родительском окне...
    BEGIN_MSG_MAP_EX(CLogviewDlg)
        ...
        MSG_WM_TIMER(OnTimer)
        REFLECT_NOTIFICATIONS() //это пнет WM_DRAWITEM обратно в контрол
    END_MSG_MAP()

//в контроле...
    BEGIN_MSG_MAP_EX(CColorListBox)
        MESSAGE_HANDLER(OCM_DRAWITEM, OnDrawItem) //заметь что код сообщения начинается на OCM_
    END_MSG_MAP()
____________________
God obviously didn't debug, hasn't done any maintenance, and no documentation can be found. Truly amateur work.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.