关于AnimateWindow setwindowrgn的问题,求教!

luotian110 2013-01-16 10:26:54
我先用setwindowrgn设置窗体为圆角窗体。然后使用AnimateWindow做淡入淡出效果。
但是问题来了。。。部分win7上出现。淡入淡出效果的时候 圆角窗体失效。。。。。
而有的win7又工作正常。。。。。


这让我很费解。。。。

具体代码如下。。。求大神指教。。。

FormCreate:
var
hdwd: THandle;

begin
hdWd := CreateRoundRectRgn(1, 1, width, height, 28, 28);
setwindowrgn(handle, hdWd, true);
Left := (Screen.Width - Width) div 2;
Top := (Screen.Height - Height) div 2;
AnimateWindow(Self.Handle, 1000, AW_BLEND or AW_ACTIVATE);
end;


timer关闭:
AnimateWindow(Self.Handle, 1000, AW_HIDE or AW_VER_NEGATIVE );
slef.close;
...全文
156 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luotian110 2013-01-16
  • 打赏
  • 举报
回复
明天 没有其他解决办法了 就结贴
luotian110 2013-01-16
  • 打赏
  • 举报
回复
引用 1 楼 zhangw198636 的回复:
这个应该跟操作系统的主题有关。窗体效果都是调win底层,底层不支持就没法用。如果想要淡入淡出效果可以设置窗体透明度。
我也觉得可能是主题引起的。。。我现在也是用的timer 10毫秒 改变一次透明度。。。看起来效果也差不多了。。。。不过 这api有这毛病 还真奇怪
zhangw198636 2013-01-16
  • 打赏
  • 举报
回复
这个应该跟操作系统的主题有关。窗体效果都是调win底层,底层不支持就没法用。如果想要淡入淡出效果可以设置窗体透明度。
hsfzxjy 2013-01-16
  • 打赏
  • 举报
回复
改透明度:Form.AlphaBlend

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧