![]() |
|
|
#1
|
||||
|
||||
|
Нужна помощь. Мне нужно определить находиться ли курсор мыши на форме в Регионе типа TRect. Использую следующий код функции, но не работает он что-то:
Код:
function CursInReg(R: TRect): Boolean; var CP: TPoint; begin GetCursorPos(CP); if (CP.X>R.left)and(CP.X<R.Right)and(CP.Y>R.Top)and(CP.Y<R.Bottom) then Result:=True else Result:=False; end; |
|
#2
|
|||
|
|||
|
Иммено на форме? Я пробовал твою функцию. У тебя получается только на всем screen'е.
|
|
#3
|
||||
|
||||
|
Нужно определить именно на скрине, а не на форме но, у меня почемуто неработает!
![]() |
|
#4
|
|||
|
|||
|
Цитата:
Вот именно, как раз на всем скрине координаты определяются... А если надо надо определить положение мыши на форме, добавляем метод ScreenToClient. Код:
function CursInReg(R: TRect): Boolean; var CP: TPoint; begin GetCursorPos(CP); ScreenToClient(Form1.Handle,CP); //Получили координаты на форме if (CP.X>R.left)and(CP.X<R.Right)and(CP.Y>R.Top)and(CP.Y<R.Bottom) then Result:=True else Result:=False; end; |
|
#5
|
||||
|
||||
|
Мне надо чтобы глаз выводился посередки экрана и таращился на курсор мыши, файлы глаз .bmp в папке Dta:
~.bmp-Взгляд Чисто прямо D.bmp-Вниз DL.bmp-Вниз и влево DR.bmp-Взгляд в низ и в право L.bmp-в Лево R.bmp-в Право U.bmp-Взгляд в верх UL.bmp-Взгляд Вверх и Влево UR.bmp-Взгляд Вверх-Вправо Мои исходники немного корявые но я уверен что там все правильно, посмотри что там нетак, правда там еще неготово L-TImage - скрытый компонент для загрузке .bmp Код: Код:
unit CMAIN;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TFMAIN = class(TForm)
T: TTimer;
L: TImage;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure TTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FMAIN: TFMAIN;
B: TBitMap;
DC: HDC;
implementation
{$R *.dfm}
procedure DrawAll;
begin
DC:=GetDC(0);
if (Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30)and(Mouse.CursorPos.Y>=Round(Screen.Height/2)-30)and(Mouse.CursorPos.Y<=Round(Screen.Height/2)+30) then
begin
FMAIN.L.Picture.LoadFromFile('Dta\~.bmp');
end;
if (Mouse.CursorPos.Y>=Round(Screen.Width/2)-40)and(Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30) then
begin
FMAIN.L.Picture.LoadFromFile('Dta\D.bmp');
end;
if (Mouse.CursorPos.Y<=Round(Screen.Width/2)+40)and(Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30) then
begin
FMAIN.L.Picture.LoadFromFile('Dta\D.bmp');
end;
B.Canvas.Handle:=DC;
B.Canvas.Draw(Round(Screen.Width/2)-80,Round(Screen.Height/2)-80,FMAIN.L.Picture.Graphic);
ReleaseDC(0,DC);
end;
procedure TFMAIN.FormCreate(Sender: TObject);
begin
L.Visible:=False;
L.Width:=80;
L.Height:=80;
L.Transparent:=True;
L.Stretch:=True;
B:=TBitMap.Create;
B.Width:=Screen.Width;
B.Height:=Screen.Height;
FMAIN.Width:=0;
FMAIN.Height:=0;
T.Enabled:=True;
end;
procedure TFMAIN.FormDestroy(Sender: TObject);
begin
B.Destroy;
L.Free;
end;
procedure TFMAIN.TTimer(Sender: TObject);
begin
DrawAll;
end;
end. |
|
#6
|
||||
|
||||
|
Я разобрался с етим!!!
|