![]() |
|
|
#1
|
|||
|
|||
|
Делая лабу по операционным системам наткнулся на такую проблему.
В лабе присутствует регион, созданный Elli:=CreateEllipticRgn (...). Он меняет цвета и двигается по нажатию стрелок. Вопрос как реализовать движение региона мышкой? Нашел что есть такая функция GetCursorPos(Tpoint). Использовал ее, потом с помощью PtInRegion проверяю наличие Tpoint.x и Tpoint.y в регионе Elli: Код:
if PtInRegion (Elli, Tpoint.x, Tpoint.y) then ... end; Я так понял что я просто проверяю положение курсора? А как получить координаты, где было произведено нажатие левой кнопки мыши? А отпускание? P.S. Лабы Windows API. |
|
#2
|
||||
|
||||
|
Так же как и не региона. Нажимаем кнопку мышки - выставляем флаг нажатия и запоминаем старые координаты. Двигаем мышку - обновляем координаты, выставляем новую позицию региона. Отпускаем кнопку мышки - снимаем флаг.
|
|
#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. |