FAQ:WinAPI VCPP:CScrollView и определение координат курсора мыши — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (Новая: ===Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курс...) |
RXL (обсуждение | вклад) м (→Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?) |
||
Строка 5: | Строка 5: | ||
полосами прокруток (dX,dY), и отнимаем от координат (X,Y): | полосами прокруток (dX,dY), и отнимаем от координат (X,Y): | ||
− | < | + | <syntaxhighlight lang="cpp"> |
void CMyScrollView::OnLButtonDown(UINT nFlags, CPoint point) | void CMyScrollView::OnLButtonDown(UINT nFlags, CPoint point) | ||
{ | { | ||
Строка 22: | Строка 22: | ||
CScrollView::OnLButtonDown(nFlags, point); | CScrollView::OnLButtonDown(nFlags, point); | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
[[Category:FAQ:WinAPI VCPP]] | [[Category:FAQ:WinAPI VCPP]] |
Версия 01:05, 30 июля 2008
Если окно объекта, производного от CScrollView, имеет полосы прокрутки, то как определить координаты курсора мыши?
От координат на экране нужно отнять величины сдвига, заданные в данный момент полосами прокруток. При нулевых положениях полос прокруток левый верхний угол окна имеет логические координаты (0,0). При щелчке по окну в обработчик OnLButtonDown пришли координаты (X,Y). Для определения действительных значений координат берём текущие значения сдвига окна, заданные полосами прокруток (dX,dY), и отнимаем от координат (X,Y):
void CMyScrollView::OnLButtonDown(UINT nFlags, CPoint point) { POINT pnt = GetScrollPosition(); //или //CPoint pnt = GetScrollPosition(); long Xw=point.x-pnt.x; long Yw=point.y-pnt.y; //Если теперь нарисовать на окне точку Xw,Yw, то на //экране точка будет выведена в точности под курсором CDC* pdc=GetDC(); pdc->SetPixel(Xw,Yw,RGB(0,0,0)); ReleaseDC(pdc); CScrollView::OnLButtonDown(nFlags, point); }