Re: Как отловить передвижение мыши над Static Text в ATL Dia
От: RomeoMontekky  
Дата: 17.12.03 09:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Люди, помогите пожалуйста. Эта ATL меня скоро доканает.

А>У меня ATL Dialog. На нем Static Text. Хочу сделать, чтобы когда курсор мыши проходит над Stztic Text он (курсор мыши) изменял свой вид. Никак не могу понять. У диалога есть обработчик сообщения OnMouseMove, но, когда мышь проходит над Static Text, этот обработчик не получает сообщений. Как быть?

А>Александр


Ловить WM_MOUSEMOVE нужно не в паренте. Нужно создать свой класс, например так:

class CMyStaticClass : public CWindowImpl<CMyStaticClass>
{
...
};

В класс нужно добавить message handler WM_MOUSEMOVE, в котором и написать весь необходимый код, или переслать сообщение парену, если уж очень хочется, чтобы обработка происходила в нём.
Затем обрабатываем сообщения WM_INITDIALOG нашего парент-диалога. В нём используем сабклассинг.

CMyStaticClass * myStatic = new CMyStaticClass(this);
myStatic->SubclassWindow(GetDlgItem(IDC_MY_STATIC));
myStaic->ShowWindow(SW_SHOW);

Теперь ты можешь обращаться к myStatic, как к обычному окну, к тому же при наведении на него мышки он будет реагировать вполне адекватно. Ну и не стоит забывать, что IDC_STATIC нужно с самого начало переименовать в IDC_MY_STATIC, иначе компилятор ресурсов не сможет отличить его от "системного" статика, к которому обращаться нельзя в силу Windows-идеологии...

Удачи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.