![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
Есть окно на API. На окне есть кнопка, как при нажатии на эту кнопку открыть ещё одно окно допустим с настройками, и работать с ним как с основным обрабатывая все события?
Пробовал дублировать классы и обработчик, появляется окно, но при закрытии закрывает всё. Видимо обработка WM_DESTROY идёт в основное окно тоже. Можно конечно отправить SW_HIDE, но тогда получается что оно висит в памяти? Пробовал создавать второе окно в DLL, но это не выход. При закрытии закрывается и окно программы. А вот если добавить второе окно из ресурсов, то происходит как раз то что и требуется. Главная форма блокируется пока идёт работа с окном из RC, и при уничтожении окна возвращает доступ. Как можно реализовать такое без использования ресурсов? Если не сложно накидайте примерчик. Вроде ничего глобального нет. Это сообщение отредактировал(а) N_Ghost - 12.8.2008, 21:46 |
|||
|
||||
Coder |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 1 Всего: 11 |
Если дело только в блокировке окна, то ее можно избежать. В начале работы программы получаем Handler окна:
Открываем по необходимости:
|
||||
|
|||||
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
нет, дело в том что мне как раз и надо блокировать главное окно пока идёт работа с вторым окном. но это не проблемма.
проблемма в том, как вызвать второе окно из одного модуля. не совсем корректно объяснил, попробую на примере.
пробовал через PostMessage с передачей нужного hWnd, закрывается всё. склоняюсь к тому что у меня паталогически не правильный код, или на WM_DESTROY надо вешать что то типа ShowWindow(hWnd, SW_HIDE); |
|||
|
||||
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
в принципе всё решилось просто, это уже я начал изобретать велосипед
![]()
хотелось бы услышать комментарии на правильность всего этого. |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 5 Всего: 116 |
N_Ghost, ты ж не хотел, чтобы окно просто скрывалось, хотел уничтожать...
|
|||
|
||||
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
volvo877, спасибо, работает!
как то я проскочил в MSDN такую фунцию. но самое смешное что при регистрации второго класса окна занимаемая память не меняется. скажем было 300Kb под приложение, 300 и остаётся. даже если удалить дополнительный класс. нет, я просто хотел научится работать с окнами на чистом апи, без ресурсов. есть куча примеров как создать окно, но нет не одного как создать два окна ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |