Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Окна WinAPI |
Автор: N_Ghost 12.8.2008, 20:41 |
Есть окно на API. На окне есть кнопка, как при нажатии на эту кнопку открыть ещё одно окно допустим с настройками, и работать с ним как с основным обрабатывая все события? Пробовал дублировать классы и обработчик, появляется окно, но при закрытии закрывает всё. Видимо обработка WM_DESTROY идёт в основное окно тоже. Можно конечно отправить SW_HIDE, но тогда получается что оно висит в памяти? Пробовал создавать второе окно в DLL, но это не выход. При закрытии закрывается и окно программы. А вот если добавить второе окно из ресурсов, то происходит как раз то что и требуется. Главная форма блокируется пока идёт работа с окном из RC, и при уничтожении окна возвращает доступ. Как можно реализовать такое без использования ресурсов? Если не сложно накидайте примерчик. Вроде ничего глобального нет. |
Автор: N_Ghost 13.8.2008, 10:58 | ||
нет, дело в том что мне как раз и надо блокировать главное окно пока идёт работа с вторым окном. но это не проблемма. проблемма в том, как вызвать второе окно из одного модуля. не совсем корректно объяснил, попробую на примере.
пробовал через PostMessage с передачей нужного hWnd, закрывается всё. склоняюсь к тому что у меня паталогически не правильный код, или на WM_DESTROY надо вешать что то типа ShowWindow(hWnd, SW_HIDE); |
Автор: N_Ghost 13.8.2008, 13:57 | ||
в принципе всё решилось просто, это уже я начал изобретать велосипед ![]()
хотелось бы услышать комментарии на правильность всего этого. |
Автор: volvo877 13.8.2008, 16:05 | ||
N_Ghost, ты ж не хотел, чтобы окно просто скрывалось, хотел уничтожать...
|
Автор: N_Ghost 13.8.2008, 17:03 |
volvo877, спасибо, работает! как то я проскочил в MSDN такую фунцию. но самое смешное что при регистрации второго класса окна занимаемая память не меняется. скажем было 300Kb под приложение, 300 и остаётся. даже если удалить дополнительный класс. нет, я просто хотел научится работать с окнами на чистом апи, без ресурсов. есть куча примеров как создать окно, но нет не одного как создать два окна ![]() |