Потяните OpenGL на рабочем столе окон без окна

Я видел вещи как это, и я задавался вопросом, было ли это возможно, скажите, что я запускаю свое приложение, и оно покажет рендеринг на том, что ниже его.

Так в основном, представляя на экране без окна.

Возможный или ложь?

Примечание: Хочу сделать это на окнах и в C++.

6
задан Yonathan 29 May 2010 в 14:49
поделиться

2 ответа

Ваше приложение можно использовать для рисования в окнах других приложений. Как только вы нашли нужное окно, у вас есть его HWND, вы можете использовать его так же, как ваше собственное окно, для рисования. Но поскольку это окно не знает, что вы это сделали, оно, вероятно, испортит все, что вы на нем нарисовали, когда попытается перерисовать себя.

Есть несколько очень сложных способов обойти это, некоторые из них включают использование оконных «крючков» для перехвата сообщений отрисовки в это окно, чтобы вы знали, когда оно было перерисовано, чтобы вы также могли выполнить перерисовку.

Другой вариант - использовать области отсечения в окне. Это может позволить вам придать вашему окну необычную форму, и все, что находится за ним, по-прежнему будет выглядеть правильно.

Есть также способы взять на себя рисование фонового окна рабочего стола, и вы можете фактически запустить приложение, которое рисует анимацию и прочее на фоне рабочего стола (пока рабочий стол все еще можно использовать). По крайней мере, это было возможно в XP, но не уверен, изменилось ли это в Vista / Win7.

К сожалению, все эти параметры слишком сложны, чтобы углубляться в них без дополнительной информации о том, что вы пытаетесь сделать.

4
ответ дан 17 December 2019 в 04:42
поделиться

Вы можете использовать GetDesktopWindow () , чтобы получить HWND рабочего стола. Но, как сказано в предыдущем ответе (SoapBox), будьте осторожны, вы можете испортить рабочий стол, потому что ОС ожидает, что он владеет им.

1
ответ дан 17 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: