этот вопрос я здесь уже видел, но ответа на него я не очень понял

Вопрос:
Вызываю форму из DLL, вызываю в этой форме стандартный диалог, после чего форма (DLL) прячется за окно основной программы. Я примерно понимаю что нужно
передать DLL-е указатель на родительское окно, но после этого при закрытии DLL выдается ошибка

. Особенно это проявляется когда сначала вызывается одна DLL из нее другая и в последней диалог.
Рекомендую яснее выражать свои мысли, сэкономите кучу времени читающим
S>Я примерно понимаю что нужно передать DLL-е указатель на родительское окно, но после этого при закрытии DLL выдается ошибка
.
Какая ошибка (ну видимо AV) и, главное, после чего "этого"? В смысле — если выполнить любым способом передачу DLL указателя на родительское окно? Даже если его не использовать?

По существу — проверьте, не используется ли полученный указатель где-нибудь при финализации DLL или вообще после того, как родительская форма уже уничтожена?
Slicer
Здравствуйте, Strag, Вы писали:
S>этот вопрос я здесь уже видел, но ответа на него я не очень понял
S>Вопрос:
S>Вызываю форму из DLL, вызываю в этой форме стандартный диалог, после чего форма (DLL) прячется за окно основной программы. Я примерно понимаю что нужно
S>передать DLL-е указатель на родительское окно, но после этого при закрытии DLL выдается ошибка
. Особенно это проявляется когда сначала вызывается одна DLL из нее другая и в последней диалог.
у нас тоже были такие проблемы, но не навсех OS (чаще всего в NT4)
например сообщение через ShowMessage("") проваливалось под окно програмы и достать его можно только
переключаясь туда-сюда по Alt-tab. Ну или если программу снять ....
Пользователи этого непонимали и жаловались на "зависание программы"
Правильно, в Dll нужно присваивать Application.Handle:=MAIN_Application_Handle,
но это не всегда помогает, нужно в форме переопределить CreateParams
procedure TARMForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := Style or ws_Overlapped;
WndParent := Main_FORM_Handle;
end;
end;
а вместо ShowMessage нужно вызывать Application.MessageBox

... << Rsdn@Home 1.1.4 beta 1 >>