[SIZE=2]CRect cr;[/SIZE]
[SIZE=2]GetClientRect(&cr);[/SIZE]
[SIZE=2]ClientToScreen(&cr);[/SIZE]
[SIZE=2]CPoint pnt;[/SIZE]
[SIZE=2]GetCursorPos(&pnt);[/SIZE]
[SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][SIZE=2](cr.PtInRect(pnt)){[/SIZE]
[SIZE=2]//Курсор в клиентской области[/SIZE]
[SIZE=2]}[/SIZE][SIZE=2][COLOR=#0000ff]else[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2]//Курсор вне клиентской области[/SIZE]
[SIZE=2]};[/SIZE]
Указатель мыши за пределами ClientRect
Использую пример отсюда
http://rsdn.ru/article/qna/ui/mouseout.xml
Способ 2
Демонстрационный проект MouseExEvent, с использованием таймера.
Но этот проект отказывается работать в VS 2008, а также в 7 версии.
(Выдает одну ошибку)
Посмотрите пожалуйста этот пример и если у Вас есть возможность адаптируйте его к VS 2008. Я не смог.
Большое спасибо.
Может кому пригодится.
Несовпадение типов.
Цитата: _Oleg_
Хочу поймать момент когда, указатель мыши покидает пределы клиентской области. Мне необходим этот момент, чтобы сменить значения некоторых переменных.
Это понятно. А остальное к чему?
При движении мыши происходит отрисовка некоторых примитивов.
Геометрия примитивов зависит от значений переменных, которые, в свою очередь зависят от положения указателя мыши и положения полос прокрутки.
При выходе мыши за пределы клиентской области их отрисовка должна производится по другому.
Ко всему прочему ButtonDown|ButtonUp тоже работают только в клиентской области. Из этого также вытекали некоторые бока.
Цитата: _Oleg_
Хочу поймать момент когда, указатель мыши покидает пределы клиентской области. Мне необходим этот момент, чтобы сменить значения некоторых переменных.
OnTimer:
Код:
[COLOR=dimgray]PS:[/COLOR] [COLOR=gray]Получил за это сообщение -5 баллов и отзыв "Учи матчасть". Возможно, что-то в нем не так.[/COLOR]
http://blogs.msdn.com/oldnewthing/archive/2003/10/13/55279.aspx
может ещё чем поможет
может ещё чем поможет
Спасибо за помощь!
Сделал так.
Код:
CRect cr;
GetClientRect(&cr);
ClientToScreen(&cr);
CPoint pnt;
GetCursorPos(&pnt);
if(cr.PtInRect(pnt)){
//Курсор в клиентской области
}else{
//Курсор вне клиентской области
};
GetClientRect(&cr);
ClientToScreen(&cr);
CPoint pnt;
GetCursorPos(&pnt);
if(cr.PtInRect(pnt)){
//Курсор в клиентской области
}else{
//Курсор вне клиентской области
};
Работает намного стабильней и лучше чем в приведенном мной примере.
MouseExEvent2008.zip