#c #windows #windows-mobile #directdraw
#c #Windows #windows-mobile #directdraw
Вопрос:
Я использую полноэкранное приложение, которое использует функции DirectDraw для отображения, и оно работает нормально. Теперь я хочу показать другое приложение с его собственным окном, но другое приложение скрыто за полноэкранным приложением прямого рисования при запуске. Я могу получить доступ к другому приложению только при закрытии полноэкранного приложения directdraw.
Возможно ли переключиться на другое приложение из полноэкранного приложения direct draw во время работы? Есть ли какой-нибудь способ отобразить окно другого приложения поверх полноэкранной функции DirectDraw, а затем возобновить работу после закрытия другого окна?
Спасибо и с уважением
Ответ №1:
Я изучил это некоторое время назад и обнаружил, что способ его выполнения — подключить API DirectDraw и вставить туда свой собственный рендеринг. По сути, после того, как другое приложение закончит рисовать сцену и собирается представить backbuffer, ваш код переходит и делает свое дело. Я никогда не заставлял его работать сам, но, похоже, это подход. Я не думаю, что есть какой-либо «простой» способ сделать это.
Еще один вариант — посмотреть, может ли другое приложение работать в полноэкранном оконном режиме. В принципе, без границ, заполнение всего экрана, но технически не полноэкранный / эксклюзивный режим. Если он поддерживает это, вы можете создать самое верхнее окно, которое будет отображаться поверх него.
Комментарии:
1. Извините, я забыл упомянуть, что другое приложение не использует DirectDraw, оно использует обычные вызовы GDI. Есть идеи, возможно ли вышеуказанное, если другое приложение создает обычное окно или отображает окно сообщения? Прямо сейчас они скрыты за первым приложением.
2. Если он просто использует полноэкранное окно с вызовами GDI, попробуйте сделать ваше окно самым верхним. См . msdn.microsoft.com/en-us/library/windows/desktop /… для вызова SetWindowPos. Вы можете указать аргумент, чтобы сделать ваше окно «самым верхним», и оно будет отображаться поверх полноэкранного окна.
3. @Nerdton, я пробовал SetWindowPos и другие API, но по-прежнему не вижу другого окна. Пока первое приложение (с использованием DirectDraw) работает в полноэкранном режиме, я не могу видеть другое окно приложения (с использованием GDI)
4. в своем предыдущем комментарии вы сказали, что другое приложение не использует DirectDraw. теперь ты говоришь, что так оно и есть. SetWindowPos с «самым верхним» будет работать, если это обычное окно GDI, которое является полноэкранным. Если приложение является эксклюзивным полноэкранным приложением DirectX, то SetWindowPos не будет работать, и тогда вы попадете в то, о чем я упоминал ранее, и вам придется выполнять внедрение DLL и подключение API, чтобы вставить ваш код рисования в это другое приложение.