Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.18;
Скачать: CL | DM;

Вниз

Координаты курсора мыши   Найти похожие ветки 

 
DMA   (2002-04-06 13:30) [0]

Как определить координаты курсора мыши на всей области экрана.
Пробовал GetCursorPos() - но он работает не корректно.
Помогите PLZ!!!!!


 
lipskiy ©   (2002-04-06 13:33) [1]

А чем это он некорректно работает?
Все жизнь только им и пользуемся.


 
Anatoly Podgoretsky ©   (2002-04-06 13:35) [2]

Наверно неправильно пользуешься?


 
DMA   (2002-04-06 13:37) [3]

Почему - то у меня он реально определяет только координаты в "прямоугольнике" ~200*200, а дальше идёт по кругу.
Например: если мышь сейчас имеет координаты 250*250 - он покажет ~50*50 !


 
DMA   (2002-04-06 13:41) [4]

Пишу следующее:
var pt : TPoint;
...............

GetCursorPos(pt);

................
Возвращает:
pt.x - координаты по X
pt.y - координаты по Y

Правильно?


 
lipskiy ©   (2002-04-06 13:42) [5]

Приведи код, такого не должно быть, если делаешь все верно.


 
lipskiy ©   (2002-04-06 13:43) [6]

Черт, опоздал.
Да вроде все правильно...


 
DMA   (2002-04-06 13:44) [7]

А в чём дело?


 
Anatoly Podgoretsky ©   (2002-04-06 13:45) [8]

А дальше что делаешь с pt


 
DMA   (2002-04-06 13:48) [9]

Дальше присваиваю pt моей переменной и определяю координаты заново.


 
Anatoly Podgoretsky ©   (2002-04-06 13:48) [10]

А это нигде не используется ClipCursor, прямо или косвенно?


 
DMA   (2002-04-06 13:50) [11]

Нет.


 
Anatoly Podgoretsky ©   (2002-04-06 13:55) [12]

Ну не обязательно лично ты, а не скажем какой либо компонент.
Попробуй на пустом проекте.


 
lipskiy ©   (2002-04-06 13:56) [13]

Совет - создай новое пустое приложение и сделай там только одну процедуру - на OnMouseMove формы повесь обработчик, а внем напиши то, что ты писал для определения координат, и печатай их в лейбл или в кэпшен формы. Если все ок будет - ошибки в твоем приложении, а если та же фигня - то тогда не знаю...


 
lipskiy ©   (2002-04-06 13:56) [14]

Черт, опять опоздал...


 
DMA   (2002-04-06 14:00) [15]

Проект у меня почти пустой - подключен только один unit - он копирует текущее изображение экрана. Его я взял из FAQ`а, но там вроде ClipCursor`а нету.


 
Anatoly Podgoretsky ©   (2002-04-06 14:20) [16]

Сделай совсем пустой только один ярлык и таймер


 
DMA   (2002-04-06 14:21) [17]

Ладно, попробую!


 
DMA   (2002-04-06 14:27) [18]

Действительно, тот unit гадил - но как их использовать вместе?


 
Anatoly Podgoretsky ©   (2002-04-06 14:37) [19]

А я не знаю того unit


 
DMA   (2002-04-06 16:40) [20]

Вот тот unit , о котором я говорил :

++++++++++++++++++++++++++++++++++++++++++++++++
unit ScrnCap;
interface
uses WinTypes, WinProcs, Forms, Classes, Graphics, Controls;
{ Копирует прямоугольную область экрана }
function CaptureScreenRect(ARect : TRect) : TBitmap;
{ Копирование всего экрана }
function CaptureScreen : TBitmap;
{ Копирование клиентской области формы или элемента }
function CaptureClientImage(Control : TControl) : TBitmap;
{ Копирование всей формы элемента }
function CaptureControlImage(Control : TControl) : TBitmap;
{===============================================================}
implementation
function GetSystemPalette : HPalette;
var PaletteSize : integer;
LogSize : integer;
LogPalette : PLogPalette;
DC : HDC;
Focus : HWND;
begin
result:=0;
Focus:=GetFocus;
DC:=GetDC(Focus);
try
PaletteSize:=GetDeviceCaps(DC, SIZEPALETTE);
LogSize:=SizeOf(TLogPalette)+(PaletteSize-1)*SizeOf(TPaletteEntry);
GetMem(LogPalette, LogSize);
try
with LogPalette^ do
begin
palVersion:=$0300;
palNumEntries:=PaletteSize;
GetSystemPaletteEntries(DC, 0, PaletteSize, palPalEntry);
end;
result:=CreatePalette(LogPalette^);
finally
FreeMem(LogPalette, LogSize);
end;
finally
ReleaseDC(Focus, DC);
end;
end;
function CaptureScreenRect(ARect : TRect) : TBitmap;
var ScreenDC : HDC;
begin
Result:=TBitmap.Create;
with result, ARect do
begin
Width:=Right-Left;
Height:=Bottom-Top;
ScreenDC:=GetDC(0);
try
BitBlt(Canvas.Handle, 0,0,Width,Height,ScreenDC, Left, Top, SRCCOPY );
finally
ReleaseDC(0, ScreenDC);
end;
Palette:=GetSystemPalette;
end;
end;
function CaptureScreen : TBitmap;
begin
with Screen do
Result:=CaptureScreenRect(Rect(0,0,Width,Height));
end;
function CaptureClientImage(Control : TControl) : TBitmap;
begin
with Control, Control.ClientOrigin do
result:=CaptureScreenRect(Bounds(X,Y,ClientWidth,ClientHeight));
end;
function CaptureControlImage(Control : TControl) : TBitmap;
begin
with Control do
if Parent=Nil then
result:=CaptureScreenRect(Bounds(Left,Top,Width,Height))
else
with Parent.ClientToScreen(Point(Left, Top)) do
result:=CaptureScreenRect(Bounds(X,Y,Width,Height));
end;
end.

- из него я использую функцию CaptureScreen .



Страницы: 1 вся ветка

Текущий архив: 2002.04.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
1-57740
ymin
2002-04-05 12:19
2002.04.18
Попробовал использовать RadioButton, но прочему то при работе


3-57655
mio
2002-03-27 18:27
2002.04.18
TClientDataset или как?


1-57744
andr
2002-04-05 13:13
2002.04.18
Как посчитать кол-во дней между 2 датами?


4-57928
Alx2
2002-02-13 11:58
2002.04.18
Hook: что неправильно?


1-57747
Дима2
2002-04-04 13:11
2002.04.18
Программа