Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
3-57597
Vertigo
2002-03-22 13:57
2002.04.18
Проблема с IBQuery: подвисает приложение


1-57817
DenKop
2002-04-05 22:54
2002.04.18
Форма поверх всех окон.


14-57841
Ajax
2002-03-07 17:55
2002.04.18
Задачка...


3-57588
stepashka
2002-03-26 19:05
2002.04.18
как узнать зарегистрированные на сервере базы данных


1-57793
новенький в Делфи
2002-04-06 00:25
2002.04.18
как прогу к часикам затолкать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский