Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Создание нескольких окон приложения


Автор: Solitaire 4.8.2009, 08:58
Здравствуйте.
Сорри за неудачное название темы. Не смог придумать ничего более подходящего.
Есть небольшое приложение - что-то вроде файлового менеджера картинок, расположенных на хостинге. Приложение выполнено в стиле окна эксплорера. Возникла задача открывать несколько окон в рамках одного процесса примерно также, как это делает эксплорер или IE при открытии ссылки в новом окне.
Как можно добиться такого поведения средствами WinAPI? Нужно создавать MDI-приложение или можно создавать новое окно в отдельном потоке?

Автор: jonie 4.8.2009, 09:32
Цитата

Нужно создавать MDI-приложение или можно создавать новое окно в отдельном потоке? 
можно и SDI и без потоков - главное чтобы окно было не модальным.

Автор: Solitaire 4.8.2009, 09:52
Тоже верно. Можно просто создавать окна в основном потоке. Все-равно в один момент времени активно только одно окно и все сообщения поступают только ему. Остановлюсь пока на этом варианте. Всё же интересно, как это реализовано в "больших" приложениях. Хотелось бы сделать правильно и эффективно.

Автор: kolobok0 6.8.2009, 12:51
Цитата(Solitaire @ 4.8.2009,  09:52)
... Хотелось бы сделать правильно и эффективно.

а всё зависит от вашего представления модели. если у вас один источник - то SDI. если много - MDI. то же самое с вьюшками. много представлений одного документа - много вью. нет одно. IE держит несколько сессий TCP параллельно. значит он имеет несколько потоков для обработки - точно. Причём время жизни гораздо больше чем может показаться на первый взгляд smile


удачи вам
(круглый)

Автор: jonie 7.8.2009, 10:55
MDI зло, забудьте как страшный сон - без него вполне можно обходиться.

Автор: Mad 7.8.2009, 17:45
Цитата(jonie @  7.8.2009,  09:55 Найти цитируемый пост)
MDI зло

знаете, человек который попробует забивать гвозди микроскопом, не зная его истинного предназначения, тоже может сказать - "микроскоп это зло, все надо делать молотком" smile


Solitaire, в основном все приложения имеют один поток, который обрабатывает GUI компоненты, но если обработка какогото сообщения может занять "длительное" время. тогда код обработки выносят в отдельный поток по принципу "асинхроного вызова". (сообщения распределяються не по потокам, а по схеме ProccessID->WindowHandle)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)