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


Автор: suxxor 10.9.2011, 00:56
В общем знаю как отключить полностью прозрачность ВСЕХ окон через реестр (или в панели управления Windows), но мне нужно отключить прозрачность только для ОДНОГО окна (hWnd), и затем включить обратно! Как это сделать на DWMApi?

PS: я делаю скриншот окна, нужно чтоб на скриншоте не была видна прозрачность

Автор: Dem_max 10.9.2011, 04:45
одного окна скорее всего не получиться. Ибо до такого изврата мелкомягкие дойти не смогли. Но есть выход ты можешь сам нарисовать окно какое тебе нравиться, и там не будет присутствовать прозрачность. 


Ну из всего этого далее следует. 
Ставишь хук на создание окна, который будет ловить создание окна.
потом хукаешь оконную процедуру окна у которого нужно отключить прозрачность. 
Перехватываешь сообщение WM_NCPAINT и рисуешь свою непрозрачную рамку окна. 
Делаешь скриншот окна.
убираешь хук с оконной процедуры.

Автор: suxxor 10.9.2011, 10:02
А можно с примером! Перехватывать ЧУЖИЕ оконные процедуры я ещё не умею!

Автор: Dem_max 16.9.2011, 14:32
посмотри в сторону DwmSetWindowAttribute()
http://msdn.microsoft.com/en-us/library/aa969524(v=vs.85).aspx

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