Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
ВнизФорма в Dll Найти похожие ветки
← →
Alek_1 (2004-05-15 11:29) [0]Есть приложение, из него вызывается форма через длл.
В длл есть функция которая создает и показывает форму.
function open_client(handle: THandle): boolean; stdcall;
begin
Application.Handle:=handle;
If Not Assigned(Form4) then Form4:=TForm4.Create(Application);
Form4.Show;//Modal;
//FreeAndNil(Form4);
end;
из приложения вызываю эту функцию так:
hLib := LoadLibrary("client_dll.dll");
try
if hLib=0 then
begin
ShowMessage("Отсутствует библиотека client_dll.dll.");
exit;
end;
// GetProcAddress(hLib, "SHOWSETTINGSDIALOG")
open_client:=Topen_client(GetProcAddress(hLib,"open_client"));
IF @open_client=nil then ShowMessage("Íåò àäðåñà")
else open_client(Application.Handle);
Когда я ставлю в функции Form4.ShowModal форма появляется и работает так как нужно. А вот когда ставлю Form4.Show тогда форма не появляется и приложение стает невидимым пока не свернешь его и не развернешь.
Да и еще после закрытия формы из длл приложение стает невидимым пока не свернешь его и не развернешь.
Как с этим бороться?
← →
DrPass © (2004-05-15 12:02) [1]Есть подозрение, что у тебя в приложении open_client не описана как stdcall. Т.е. вызываться-то она вызывается, но в качестве дескриптора приложения передается хрен знает что.
← →
Alek_1 (2004-05-15 12:25) [2]Вот здесь я явно передаю дескриптор приложения
open_client(Application.Handle);
Вот тут ловлю и присваиваю его библиотеки.
function open_client(handle: THandle): boolean; stdcall; - тут описана как stdcall
begin
Application.Handle:=handle;
← →
DrPass © (2004-05-15 12:27) [3]
> function open_client(handle: THandle): boolean; stdcall;
>
Так она объявлена в DLL. Это я вижу и сам. А как она объявлена в приложении?
← →
Alek_1 (2004-05-15 12:55) [4]Вот так она обьявлена в приложениее
Topen_client = function(handle: Thandle): boolean; stdcall;
← →
Mim1 © (2004-05-15 14:28) [5]ИМХО надо сам обьект application передовать и screen.
Откомпилить все с использованием bpl - самое простое решение, правда без них потом никуда :).
← →
Goida © (2004-05-15 14:51) [6]
> Mim1
Можно Screen не передовать. Наверно, даже не нужно. Нужно на Application и главную форму.
← →
Mim1 © (2004-05-15 14:55) [7][6] Goida © (15.05.04 14:51)
Сколько людей, столько мнений. Вот только зачем передавать главную форму если это свойство application. Если вы его (обьект application) передадите то кузцец нам уже не нужен :)
← →
Alek_1 (2004-05-16 11:30) [8]
> Можно Screen не передовать. Наверно, даже не нужно. Нужно
> на Application и главную форму.
а на главную форму зачем? и если передавать то куда ее цеплять в длл?
← →
Goida © (2004-05-17 12:37) [9]
> а на главную форму зачем? и если передавать то куда ее цеплять
> в длл?
При создании окна указываете не Application, a Форму...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c