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


Автор: Leksey 23.8.2005, 14:39
Все начиналось с MFC...
Но из-за не очень гибкой архиектуры MFC(Это слабо сказано!),возникла проблема:
Как отобразить Предварительный просмотр документа в основном окне MDI приложения?

Как с помощью WinAPI можно создать предварительный просмотр?
Есть ли стандартные средства или нужно все самому писать?

Автор: Denn 23.8.2005, 16:43
Не думаю, что на WinAPI это будет проще... Есть вариант посмотреть исходники MFC по топику, как там реализовано.

Автор: Leksey 24.8.2005, 00:00
Да уже посмотрел.
Корявыми способами использовния friend и преобразования указателей, написал пример тестовый работает.
Но попытался встроить в свое приложение и начались глюки.
Все вроде бы нормально,но почему то диалоговая панель с кнопками не отображается(хотя место для нее резервируется и функция создания возвращает что-надо).
Никак не могу понять почему?
Кстати что будет если попытаться открыть окно предварительного просмотра в окне другого процесса?

Автор: Leksey 24.8.2005, 11:47
А что вообще происходит когда в потоке одного процесса создается окно дочернее к окну другого процесса?
Я вот так делаю и у меня кнопки в Предварительном просмотре становятся не доступными(Так MFC делает,если нет обработчика на кнопку)При у этих кнопок сандартные ID Mfc'шные .
Как можно решить эту проблему?

Автор: JoyEx 25.8.2005, 10:54
Цитата(Leksey @ 24.8.2005, 11:47)
А что вообще происходит когда в потоке одного процесса создается окно дочернее к окну другого процесса?


У процессов разные адресные пр-ва...

Автор: Leksey 25.8.2005, 14:51
Это я знаю.
Я спрашиваю как это будет происходить.
То есть если окна в разных потоках ,то они получают сообщения из разных очередей сообщений.
Как работает связь дочернее-основное?

Автор: JoyEx 25.8.2005, 16:27
Цитата(Leksey @ 24.8.2005, 11:47)
А что вообще происходит когда в потоке одного процесса создается окно дочернее к окну другого процесса?


Процессы и потоки это несколько разные вещи, если создаешь окно (WS_CHILD) в одном процессе, а родителя назначаешь ему из другого, то этот другой процесс (поток родителя) и будет обрабатывать сообщения от "твоего" окна, если конечно smile узнает его ID.

Цитата(Leksey @ 25.8.2005, 14:51)
То есть если окна в разных потоках ,то они получают сообщения из разных очередей сообщений.
Как работает связь дочернее-основное?

Из своей, а в твоем случае - из очереди сообщений потока родителя (хм... такое окно уже и не твоё)

Автор: Leksey 25.8.2005, 17:06
Так процедуру обработки сообщений я беру из своего потока.
А ты уверен что сообщения будут приходить в поток родительского окна и почему?

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