Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
ВнизФункция DestroyWindow Найти похожие ветки
← →
bers01 (2003-12-26 13:27) [0]Доброго времени суток Уважаемые Мастера!
Подскажите пожалуйста:
При использовании функцииDestroyWindow(Handle)
вызываются ли методыonClose
иonHide
соответствующей формы?
С Уважением, Андрей.
← →
MBo (2003-12-26 13:33) [1]Не делай так. Не надо.
← →
YuRock (2003-12-26 13:40) [2]Должен вызываться OnDestroy. OnClose - нет
← →
Bers01 (2003-12-26 14:08) [3]>>MBo © (26.12.03 13:33)
>> Не делай так. Не надо.
А как надо? Если есть только Handle Формы...
С Уважением, Андрей.
← →
MBo (2003-12-26 14:13) [4]Задачу расскажи подробнее.
← →
Bers01 (2003-12-26 14:27) [5]В Dll-ке хранится описание класса формы и функция
...
function MCreateForm: TForm; stdcall;
begin
result:=nil;
result:=TMyForm.Create(nil);
result.Show;
end;
...
Export MCreateForm;
После выполнения данной функции из основной программы в списке сохраняется Дескрипторы динамически загруженной библиотеки и открытого окна.
По опред. действию в основной программе это вспомогательное окно нужно корректно закрыть, чтобы выполнилось его событие onClose;
Вот примерно так...
Есть еще мысль сохранять указатель на объект типа TForm вместо дескриптора. Может так лучше?
C Уважением, Андрей.
← →
MBo (2003-12-26 14:36) [6]>чтобы выполнилось его событие onClose
Тогда стоит посылать окну WM_CLOSE.
>типа TForm вместо дескриптора. Может так лучше?
Если пакеты (BPL) вместо DLL использовать - это, наверно, самое лучшее.
← →
Bers01 (2003-12-26 14:44) [7]>Тогда стоит посылать окну WM_CLOSE.
Сначала я и посылал окну:
SendMessage(FHandle,WM_CLOSE,0,0);
И оно при этом даже закрывалось, но при закрытии основного приложения возникала ошибка памяти, поэтому и начал пользоватьDestroyWindow
.
Может знаете почему?
С Уважением, Андрей.
← →
YuRock (2003-12-26 15:03) [8]На самом деле, действительно лучше не делать такого - это не стиль Delphi.
Конечно, лучше использовать указатель! Но вот проблема - врядли получится, т.к. Свойства класса хранятся в сегменте данных dll, и когда ты попытаешься их пользовать - будет конец...
Попробуй PostMessage(FHandle,WM_CLOSE,0,0);
← →
Bers01 (2003-12-26 15:35) [9]>>YuRock ©
>>Но вот проблема - врядли получится
Как ни странно - получилось... :)
Но если вызываешь просто метод TForm.Close, то при закрытии основного приложения все равно выдается ошибка, а вот если после него еще и TForm.Free вызвать, то все замечательно получается!!!
Всем спасибо!
← →
YuRock (2003-12-26 15:52) [10]Так надо было просто в OnClose написать Action := caFree
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c