Текущий архив: 2005.10.30;
Скачать: CL | DM;
ВнизКак передать Canvas Найти похожие ветки
← →
Aleksey (2005-10-05 11:25) [0]Здравствуйте, Мастера....
У меня есть Длл"я, там есть функция
Function LineToolMove (Canvas: TCanvas; X,Y:LongInt; FgColor,BgColor:TColor; Var Hist: Boolean): Pointer;
Begin
If LineStart
Then Begin
Canvas.LineTo(LineOldX,LineOldY);
LineOldX:=X;
LineOldY:=Y;
Canvas.LineTo(X,Y);
End
Else Begin
LineStart:=true;
LineOldX:=X;
LineOldY:=Y;
Canvas.LineTo(X,Y);
End;
Result:=nil;
End;
, такая например.... Основная программа ее вызывает так
Function LineToolMove (Image.Canvas, X,Y,FgColor,BgColor, Hist);
Мне говорят, что я не могу читать/писать по такомуто адресу, Ошибка в Длл
← →
Гаврила © (2005-10-05 11:40) [1]Передавай не Canvas, а Canvas.handle
(HDC)
← →
TUser © (2005-10-05 11:45) [2]... и в dll создавай свою канву и пиши ей
DllCanvas.Handle:=ResievedHandle;
← →
Aleksey (2005-10-05 12:43) [3]Передаю handle.... -> Access violation
Может я криво Длл функции вызываю?
Подскажите как надо, плз.
← →
clickmaker © (2005-10-05 12:45) [4]
> Aleksey (05.10.05 12:43) [3]
> Передаю handle.... -> Access violation
> Может я криво Длл функции вызываю?
> Подскажите как надо, плз.
а ты канву часом не забыл создать?
C := TCanvas.Create;
C.Handle := HandleFromExe;
← →
evvcom © (2005-10-05 12:48) [5]
> Может я криво Длл функции вызываю?
> Function LineToolMove (Image.Canvas, X,Y,FgColor,BgColor,
> Hist);
Ну так ты ее точно не вызовешь. Вероятно, криво. Извини, что-то телепатор не телепатирует. Сломался, однако.
← →
Aleksey (2005-10-05 13:00) [6]2clickmaker
Создал
2evvcom
Function LineToolMove (Image.Canvas.HANDLE, X,Y,FgColor,BgColor,Hist);
← →
TUser © (2005-10-05 14:15) [7]А реализацию функции напиши. Надо - как в [4]
← →
evvcom © (2005-10-05 14:19) [8]
> Aleksey (05.10.05 13:00) [6]
Ну что, прям вот так и вызываешь?
> Function LineToolMove (Image.Canvas.HANDLE, X,Y,FgColor,
> BgColor,Hist);
Да не надо ля-ля...
← →
GuAV © (2005-10-05 20:39) [9]Aleksey (05.10.05 12:43) [3]
Передаю handle.... -> Access violation
Приведи код из dll.
На всякий случай - VCL может пересоздавать HDC, поэтому HDC переданный в dll не следует сохранять - он может быть пересоздан, его можно считать действительным только до возврата из функции.
Страницы: 1 вся ветка
Текущий архив: 2005.10.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.036 c