VC设置窗口透明
--flyli
有时有为了实现某种目的我们需要改变窗口的透明度,今天查阅了相关资料,懂得了如何windows有此类的相关函数SetLayeredWindowAttributes,下面是他在msdn中的说明
BOOL SetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
假如是在对话框中使用的话,没有第一个参数,为
BOOL SetLayeredWindowAttributes(COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
其中只介绍让太实现透明的基本功能
代码: SetLayeredWindowAttributes(0,255/2,LWA_ALPHA);其中当第三个参数设置为ALPHA时第一个参数无意义,第二个参数为透明度的设置,255为不透明,0为完全透明
但是仅仅这一句并不能够实现窗口的透明现实,因为我们的窗口本身的属性不支持这种功能.于是在设置窗口透明度之前还需要设置一下我们的窗口属性
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
以上代码的含义暂且不说,其实我也不是很清楚,只知道是为了让窗口支持透明现实的,呵呵~