今天在程序中调用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.我错了