Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ClipCursor() [D5, Win95/98]


Schummi ©   (2002-05-25 15:38:00) 

Доброго времени суток, Мастера. Такой вопрос. Использую процедуру ClipCursor() - ограничивает область для курсора. Однако возникает ошибка EAccessViolation. Почему она возникает и как от неё избавиться? Спасибо!


Walker   (2002-05-27 02:27:00) [1]

Ха-ха-ха!

var
r:TRect;
begin
//r.Left, Right and so on
ClipCursor(@r);
end;


Song   (2002-05-26 23:04:00) [2]

2mukha © (26.05.02 19:05)
А почему не совсем удачно? Насколько я помню в ClipCursor() нужно передавать переменную типа PRect


ION T   (2002-05-26 19:36:00) [3]

Да просто ClipCursor(nil) надо вызывать для освобождения....


mukha   (2002-05-26 19:05:00) [4]

Мне тоже не удалось решить такую проблему. Для ограничения перемещения курсора областью формы я поступил следующим образом, не совсем удачно, но работает:

// ограничение области перемещения курсора
procedure TForm1.FormCreate(Sender: TObject);
var
aRect:TRect;
begin
Form1.BorderStyle:=bsSingle;
GetWindowRect(Handle, aRect);
ClipCursor(@aRect);
end;

// снятие ограничения перемещения курсора

procedure TForm1.FormDestroy(Sender: TObject);
var
aRect:TRect;
begin
arect:=rect(0,0,GetSystemMetrics(SM_CXFULLSCREEN),GetSystemMetrics(SM_CxFULLSCREEN));
ClipCursor(@aRect);
end;


Song   (2002-05-26 12:38:00) [5]

Интересно, а если ты передаёшь в процедуру ClipCursor nil, тогда зачем ты задавал R?


Schummi   (2002-05-26 10:20:00) [6]

2KilkennyCat

procedure TForm1.Button1Click(Sender: TObject);
var
R:PRect;
begin
R.Left:=0;
R.Right:=400;
R.Top:=0;
R.Bottom:=400;
ClipCursor(nil);
end;


Schummi   (2002-05-26 10:19:00) [7]

2KilkennyCat Как???


KilkennyCat   (2002-05-26 09:52:00) [8]

Из хелпа:
Remarks

The cursor is a shared resource. If an application confines the cursor, it must release the cursor by using ClipCursor before relinquishing control to another application.

Ошибка о доступе. Вывод: освободи курсор перед вызовом.


KilkennyCat   (2002-05-26 09:49:00) [9]

Приведи кусок кода, а то как же понять, почему ошибка...


Schummi   (2002-05-26 09:48:00) [10]

Народ, может так:
var
R:TRect;
begin
...
ClipCursor(^R);
...
end;

Просто я так делал:
var
R:PRect;
begin
...
{присваивание значений Top, Left, Right, Bottom в R}
ClipCursor(R);
...
end;


Schummi   (2002-05-26 09:11:00) [11]

2ZZ
Издеваешься? А так как же?


ZZ   (2002-05-25 16:06:00) [12]

Ошибка в 17 строке


Наверх

Титульная страница Поиск, карта сайта Написать письмо