今天在程序中调用SetLayeredWindowAttributes竟然不成功,返回值为0,GetLastError提示:参数错误
而这样的代码我已经不止一次用过,在若干次搜索尝试后发现:
SetLayeredWindowAttribute does not work for child windows
具有WS_CHILD风格的子窗口,无法使用SetLayeredWindowAttributes函数设置透明
给我提示的第一个帖子:
http://www.codeguru.com/forum/archive/index.php/t-292750.html
and 2nd
http://social.microsoft.com/Forums/en-US/vcgeneral/thread/9540a3ac-6c5d-412c-8b2a-ae025cf4941d/
终于被我找到MSDN中的相关说明:
http://msdn.microsoft.com/en-us/library/ms632599.aspx#layered
顺便把MSDN中的一段贴在下面,方便下次使用:
Using Layered Windows
To have a dialog box come up as a translucent window, first create the dialog as usual. Then, on WM_INITDIALOG, set the layered bit of the window's extended style and call SetLayeredWindowAttributes with the desired alpha value. The code might look like this:
Note that the third parameter of SetLayeredWindowAttributes is a value that ranges from 0 to 255, with 0 making the window completely transparent and 255 making it completely opaque. This parameter mimics the more versatile BLENDFUNCTION of the AlphaBlend function.
To make this window completely opaque again, remove the WS_EX_LAYERED bit by calling SetWindowLong and then ask the window to repaint. Removing the bit is desired to let the system know that it can free up some memory associated with layering and redirection. The code might look like this:
THE END.我错了
本文介绍了在使用SetLayeredWindowAttributes函数时遇到的问题及解决方案,特别是针对具有WS_CHILD风格的子窗口无法设置透明的情况。文中提供了调整窗口样式以实现透明效果的具体步骤,并附带了MSDN的相关说明。
1035

被折叠的 条评论
为什么被折叠?



