|
#1
|
||||
|
||||
Курсор + TRect
Нужна помощь. Мне нужно определить находиться ли курсор мыши на форме в Регионе типа 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
|
||||
|
||||
Усе
Я разобрался с етим!!!
|