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

RM>Здравствуйте, Аноним, Вы писали:


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

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

А>>Александр


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


RM>class CMyStaticClass : public CWindowImpl<CMyStaticClass>

RM>{
RM> ...
RM>};

RM>В класс нужно добавить message handler WM_MOUSEMOVE, в котором и написать весь необходимый код, или переслать сообщение парену, если уж очень хочется, чтобы обработка происходила в нём.

RM>Затем обрабатываем сообщения WM_INITDIALOG нашего парент-диалога. В нём используем сабклассинг.

RM>CMyStaticClass * myStatic = new CMyStaticClass(this);

RM>myStatic->SubclassWindow(GetDlgItem(IDC_MY_STATIC));
RM>myStaic->ShowWindow(SW_SHOW);

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


RM>Удачи!


Большое СПАСИБО, работает! Ларчик-то, оказывается, просто открывался.

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