关于制作桌面特效
想制作一个桌面特效,就是有花瓣飘落的效果
绘图只会在桌面上,而不影响到前端运行的程序
预想了一下 有两种方法
1 直接在桌面上绘图
2 创建一个透明的窗口,然后将所有鼠标键盘事件传递给下面的窗口
1 使用GetDesktopWindow() 获取句柄 然后绘图 但是后来发现绘图会画到当前窗口上,然而我希望的是只绘在桌面上,而不影响正在运行的程序
请问有什么方法可以限制绘图的区域 如果这个区域有窗口就不绘图
2 还没试过 不知道是否可行
[解决办法]
第二个用层叠窗口,系统会搞定你想的两个问题(透明和事件传递)
[解决办法]
关键API SetLayeredWindowAttributes
关键属性 WS_EX_LAYERED
[解决办法]
你可以设置按颜色过滤透明
[解决办法]
BOOL SetLayeredWindowAttributes( HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
dwFlags
[in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
Use crKey as the transparency color.
LWA_ALPHA
Use bAlpha to determine the opacity of the layered window.
LWA_COLORKEY
按颜色透明,你把背景涂成黑的,按黑色透明 再画上不同的颜色 那地方就出来了