2015-01-24 2 views
0

Я хочу написать программу, которая использует OpenGL для создания анимированного рабочего стола. Поэтому мне нужно знать HWND, который содержит изображение с рабочего стола. Идеал был бы примером кода, как я нахожу это конкретное окно.Что такое реальный фон рабочего стола HWND?

+1

'GetDesktopWindow' не режет? –

+0

Нет. GetDesktopWindow() Не окно, содержащее фон рабочего стола. Я пробовал это. –

+0

Я думаю, что вы ищете это http://stackoverflow.com/questions/14186400/setting-wallpaper-with-win-api –

ответ

1

Если вы внимательно прочитали документацию, вы обнаружите, что вы не должны устанавливать формат пикселей в окне root/desktop. Кроме того, DC окна рабочего стола не принадлежит исключительно. Любое ограничение делает невозможным непосредственное создание контекста OpenGL в окне рабочего стола. Также обратите внимание, что для вашей типичной оболочки Windows (explorer.exe) рабочий стол фактически представляет собой значок Win32 Icon, принадлежащий процессу explorer.exe и являющийся дочерним элементом окна рабочего стола.

Что вы можете сделать, это создать FBO того же размера окна рабочего стола с пиксельным форматом, совместимым с DC окна рабочего стола. Затем визуализируйте FBO, прочитав его содержимое в DIBSection, используйте CreateDIBPatternBrushPt, чтобы создать HBRUSH и установить фоновый кисть рабочего стола с помощью SetClassLongPtr.

Смежные вопросы