看到网上有用duilib实现半透明异形窗口的例子, 把代码下回来之后,发现是用两个窗口重叠
在一起做成的. 本人不是很喜欢, 于是到网上查了UpdateLayeredWindow(...)的用法,
试着在duilib里使用. 先看结果吧,上图:
![](https://img-blog.csdn.net/20130521011402959)
UpdateLayeredWindow(...)这个函数是有限制的.
1.当前窗口样式必须是WS_EX_LAYERED,不能是WS_CHILD.
2.所有的WS_CHILD样式的子窗口不能正常显示.
3.系统接管几乎所有WM_PANIT消息, 除了我们主动调用Invalidate()产生的WM_PAINT.( 这点很重要 )
4.BeginPaint与EndPaint的使用.
在一起做成的. 本人不是很喜欢, 于是到网上查了UpdateLayeredWindow(...)的用法,
试着在duilib里使用. 先看结果吧,上图:
UpdateLayeredWindow(...)这个函数是有限制的.
1.当前窗口样式必须是WS_EX_LAYERED,不能是WS_CHILD.
2.所有的WS_CHILD样式的子窗口不能正常显示.
3.系统接管几乎所有WM_PANIT消息, 除了我们主动调用Invalidate()产生的WM_PAINT.( 这点很重要 )
4.BeginPaint与EndPaint的使用.
附件中有代码,使用说明,演示程序中的登录对话框就是效果.