![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос для тех кто работал с формами в DLL
Ghost. © (2002-08-05 17:40:00)Почему при рисовании на канвас формы вызваной из dll выдается ошибка или как ее надо правильно вызвать, чтобы можно было рисовать?
Ghost. (2002-08-06 09:30:00) [1]Сам разобрался просто из dll явно нельзя обращаться к форме работает просто
canvas.Draw(0,0,ecln.image);
Mystic (2002-08-06 01:20:00) [2]Может помочь флажок Build with runtime packages в Project|Options
Ghost. (2002-08-05 18:27:00) [3]Access violation at address 00e9d054 in module "11.dll". Read of adress 000000238
Skier (2002-08-05 18:24:00) [4]>Ghost.
Какая ошибка ?
Ghost. (2002-08-05 18:22:00) [5]нет тоже самое пишу
vdesk.Canvas.Lock;
vdesk.canvas.Draw(0,0,ecln.image);
vdesk.Canvas.Unlock;
и ошибка, а если
Image3.Picture.Bitmap.Assign(ecln.image)
которая на форме находится..то все работает..тока моргат
Skier (2002-08-05 18:16:00) [6]>Ghost
Ошибся :)
После Canvas.Lock - Canvas.UnLock;
Skier (2002-08-05 18:15:00) [7]>Ghost
> ошибок кроме рисования на канвасе формы
Попробуй это :
Canvas.Lock;
//......рисуешь...
Canvas.Lock;
Ghost. (2002-08-05 18:08:00) [8]Чета ты так загрузил ...дело в том, что программа в dll полностью рабочая и довольно таки большая и ошибок кроме рисования на канвасе формы нет.а что такое интерфейсыя не заню
Skier (2002-08-05 18:00:00) [9]>Ghost
У host-приложения и у DLL разные таблицы классов и разные
входы в них, поэтому когда ты пытаешься закастить
Pointer, который указывает на форму созданной в DLL, в
host-приложении то - происходит ошибка
(в твоём случае это - класс Tvdesk)
Насколько я знаю в этом случае могут спасти интерфейсы.
Ghost. (2002-08-05 17:51:00) [10]FUNCTION CreateTheForm: Pointer; Export;
BEGIN
Result := Tvdesk.Create(NIL);
END;
FUNCTION ShowTheForm(P: Pointer): Boolean; Export;
BEGIN
Tvdesk(P).Show;
Result := TRue;
END;
Skier (2002-08-05 17:45:00) [11]>Ghost
А как ты её вызываешь ?