|
#1
|
|||
|
|||
CreateEllipticRgn
Делая лабу по операционным системам наткнулся на такую проблему.
В лабе присутствует регион, созданный Elli:=CreateEllipticRgn (...). Он меняет цвета и двигается по нажатию стрелок. Вопрос как реализовать движение региона мышкой? Нашел что есть такая функция GetCursorPos(Tpoint). Использовал ее, потом с помощью PtInRegion проверяю наличие Tpoint.x и Tpoint.y в регионе Elli: Код:
if PtInRegion (Elli, Tpoint.x, Tpoint.y) then ... end; Я так понял что я просто проверяю положение курсора? А как получить координаты, где было произведено нажатие левой кнопки мыши? А отпускание? P.S. Лабы Windows API. |
#2
|
||||
|
||||
Так же как и не региона. Нажимаем кнопку мышки - выставляем флаг нажатия и запоминаем старые координаты. Двигаем мышку - обновляем координаты, выставляем новую позицию региона. Отпускаем кнопку мышки - снимаем флаг.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
Цитата:
Код:
function WndProc(Wnd:HWND;Msg,wParam,lParam:Integer):Integer;stdcall; var CPos:TPoint; begin if msg=WM_LBUTTONDOWN then begin getCursorPos(CPos); ScreenToClient(Wnd, CPos); showmessage(inttostr(CPos.X)+', '+inttostr(CPos.Y) ); end; end; ЗЫ конечно еще есть LOWORD(lParam); HIWORD(lParam); тоже должно действовать Последний раз редактировалось YVitaliy, 27.11.2012 в 22:47. |