SetLayeredWindowAttributes参数错误

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值