|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.09.2010, 01:02 | #1 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 16
|
Закрытие основного процесса через dll
Есть основной модуль, перед отображением основной формы вызывается функция из dll, которая создаёт модальное(если не ошибаюсь - модальное, не закрыв которого, не получишь доступ к основному), это окошко представляет собой форму для подключения к серверу, меня волнует два вопроса связанных с закрытием программы. На форме подключения(которая создаётся dll-ой) есть кнопка закрытия программы (системные кнопочки убраны), если я добавляю PostQuitMessage или Application.Terminate, то закрывается форма подключения, а основная форма - нет. Но если я добавлю тоже самое в эвент OnCloseQuery, то главная форма закрывается.
Вопрос 1: Как совершить полноценное закрітие программі через Button. Вопрос 2: Как избежать полу секундного отображения главной формы, перед полным закрытием программы? (это происходит при Application.Terminate на onCloseQuery. |
02.09.2010, 02:03 | #2 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Почему бы просто не вернуть управление из функции, указав, что пользователь указал закрытие приложения? А уж вызывающий сам разберётся, как ему лучше закрываться. Может я вашу DLL из консольной программы вызываю?
Насчёт задержки - я не вижу, откуда она у вас возникает. По-хорошему, её надо бы исправлять, если это возможно. На худой конец - скрыть форму (Hide) перед закрытием.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
02.09.2010, 12:34 | #3 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 16
|
Есть проблема, как я поменяю свойство Hide основной формы, если я её не вижу из dll'ки, В C++, например, можно передать handle основного модуля и закрыть/скрыть его (модуль), а здесь как?
|
02.09.2010, 12:44 | #4 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Ну и здесь вы можете передать или саму форму (объект) или дескиптор окна. Но вопрос не в этом. Зачем вам вообще передавать форму и скрывать её? Что если я вызываю вашу DLL из консольной программы? У меня и окна-то никакого нет.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
02.09.2010, 12:51 | #5 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 16
|
Ок, закрою я приложение, в зависимости от того что ткнет User, вопрос второй, как же всё таки правильно передать Handle формы, чтобы скрыть её? Было бы хорошо с примером кода... Буду очень признателен!
|
02.09.2010, 13:15 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
Тогда в кликах кнопок пиши Код:
Код:
Ферштеен?
I'm learning to live...
|
|
02.09.2010, 17:55 | #7 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 16
|
С закрытием всё понятно, а когда вы описали в коде, всё стало ещё проще... (спасибо за код огромное). Сейчас больше волнует как в функции "ShowModal" обеспечить скрытие главной формы, что бы после закрытия модального окна юзер не увидел его одинарное мерцание перед захлопыванием.
|
02.09.2010, 18:15 | #8 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Опять вы за своё.
Ну не надо вам в ShowModal закрывать главную форму! Не надо. Вам уже три раза сказали (два - я, один - Stilet). Вы "да-да, понятно" - и заново: "а закрыть-то как"? Вы лучше скажите, что непонятно-то?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
02.09.2010, 23:53 | #9 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 16
|
Наверное вы что-то не до поняли, что бы вернуть результат главной форме, надо схлопнуть модальное окно, иначе не произойдет возврат из функции. В итоге, как только схлопывается модальное окно, тут же отображается главное, и пока дойдёт до обработки результата модального окна, оно светится, вот так. Может конечно я чего-то не допераю...
Объясните пожалуйста! |
03.09.2010, 00:53 | #10 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
А, теперь понятно.
Правда, не понятно ( ) при этом, откуда у вас эта задержка? Модальное окно закрывается мгновенно. Функция возвращает результат тоже мгновенно. Соответственно, главное приложение (с главным окном) реагирует тоже мгновенно: Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
закрытие чужого процесса | Dimon | Win Api | 7 | 12.05.2010 12:01 |
[DLL] Загрузка и выгрузка dll в/из чужого процесса | Человек_Борща | Win Api | 4 | 28.02.2010 17:47 |
Сбой обновления основного вайла, патч отменен. Сбой CRC основного файла. | Naruto63 | Помощь студентам | 2 | 21.10.2009 20:28 |
Закрытие ветви процесса | SauronX | Win Api | 2 | 07.02.2009 16:18 |
Удаление/закрытие процесса | Djaconda | Win Api | 2 | 13.06.2008 13:11 |