VB.NET 章鱼哥出品--利用API函数AnimateWindow创建Popup提示窗口,窗体的动画效果

前端之家收集整理的这篇文章主要介绍了VB.NET 章鱼哥出品--利用API函数AnimateWindow创建Popup提示窗口,窗体的动画效果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当我们打开电脑上网时,是不是会经常看到桌面的右下角弹出一个小的新闻热点窗体,我们可以实现吗?当然可以,这篇文章就来给您掩饰怎么样来用代码实现。看吧,正写着呢弹出了一个。


一、主要用到的函数是API函数AnimateWindow。下面来简单的介绍一下这个函数的使用。
1 函数声明

  1. '声明API函数AnimateWindow。该函数可以动态的操作窗体
  2. Declare Function AnimateWindow Lib "user32" Alias "AnimateWindow" (ByVal hwnd As IntPtr,ByVal dwTime As Int32,ByVal dwFlags As Int32) As Boolean
2,参数设置
hWnd:指定产生动画的窗口的句柄。
dwTime:指明动画持续的时间(以微秒计),完成一个动画的标准时间为200微秒。
dwFags:指定动画类型。这个参数可以是一个或多个下列标志的组合。标志描述:
AW_SLIDE:使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。
AW_ACTIVATE:激活窗口。在使用了AW_HIDE标志后不要使用这个标志。
AW_BLEND:使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。
AW_HIDE:隐藏窗口,缺省则显示窗口。
AW_CENTER:若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。
AW_HOR_POSITIVE:自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
AW_VER_POSITIVE:自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
AW_VER_NEGATIVE:自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略。
AW_HOR_NEGATIVE:自右向左显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略
3,返回值
如果函数成功,返回值为非零;如果函数失败,返回值为零。在下列情况下函数将失败

二、窗体设计:
窗体很简单,一个Form窗口,一个PictureBox控件,一个Button按钮,一个Timer控件


实现功能:每隔三秒钟,提示窗口在桌面的右下角显示隐藏交替。可有多种显示方式,和隐藏方式。在代码中都有体现,读者可自行测试。
三、代码实现
在Moudul模块中先定义一些全局变量

  1. Module Module1
  2. '从左到右显示
  3. Public Const AW_HOR_POSITIVE As Int32 = &H1
  4. '从右到左显示
  5. Public Const AW_HOR_NEGATIVE As Int32 = &H2
  6. '从上到下显示
  7. Public Const AW_VER_POSITIVE As Int32 = &H4
  8. '从下到上显示
  9. Public Const AW_VER_NEGATIVE As Int32 = &H8
  10. '若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;否则使窗口向外扩展,即展开窗口
  11. Public Const AW_CENTER As Int32 = &H10
  12. Public Const AW_HIDE As Int32 = &H10000 '隐藏窗口,缺省则显示窗口
  13. '激活窗口。在使用了AW_HIDE标志后不能使用这个标志
  14. Public Const AW_ACTIVATE As Int32 = &H20000
  15. '使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
  16. Public Const AW_SLIDE As Int32 = &H40000
  17. '透明度从高到低
  18. Public Const AW_BLEND As Int32 = &H80000
  19. '判断窗体是否隐藏
  20. Public Ishide As Boolean
  21. End Module

提示窗体的类中实现的代码
  1. '***************************************************************************
  2. '作者:章鱼哥,QQ3107073263 群:309816713
  3. '如有想要源码或好的建议请联系我,大家一起进步
  4. '群里正在建设,欢迎参加讨论
  5. '****************************************************
  6. Public Class Form_Main
  7. ' 显示在屏幕的右下角
  8. Dim Rect As Rectangle = Screen.PrimaryScreen.WorkingArea '获取电脑桌面屏幕
  9. Dim X As Integer '提示窗口的Left
  10. Dim Y As Integer '提示窗口的Top值
  11. '声明API函数AnimateWindow。该函数可以动态的操作窗体
  12. Declare Function AnimateWindow Lib "user32" Alias "AnimateWindow" (ByVal hwnd As IntPtr,ByVal dwFlags As Int32) As Boolean
  13. ' 窗体初始化
  14. Private Sub Form_Main_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
  15. X = Rect.Width - Me.Width
  16. Y = Rect.Height - Me.Height
  17. Me.SetBounds(X,Y,Me.Width,Me.Height) '定义窗体位置
  18. Timer1.Enabled = True '开启Timer控件
  19. '将窗体设置成无边框格式。这样是有道理的,不信你吧这段代码注释掉试试
  20. Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
  21. End Sub
  22. '显示
  23. Private Sub ShowForm()
  24. '三种方式都可以用,想用哪种就注释另外两种
  25. 'AnimateWindow(Me.Handle,2000,AW_VER_NEGATIVE Or AW_HOR_NEGATIVE) '右上飞出
  26. AnimateWindow(Me.Handle,AW_CENTER) '中间扩散
  27. 'AnimateWindow(Me.Handle,AW_BLEND)’由浅变深
  28. Ishide = False
  29. End Sub
  30. '隐藏
  31. Private Sub HideForm()
  32. 'AnimateWindow(Me.Handle,AW_HIDE Or AW_VER_POSITIVE)'由上向下飞出
  33. 'AnimateWindow(Me.Handle,AW_HIDE Or AW_VER_POSITIVE Or AW_HOR_POSITIVE) '由左上角向右下飞出
  34. AnimateWindow(Me.Handle,AW_HIDE Or AW_BLEND) '窗体慢慢透明淡出
  35. Ishide = True
  36. End Sub
  37. '定时器,隔3秒交替显示或隐藏
  38. Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Timer1.Tick
  39. If Ishide Then
  40. ShowForm()
  41. Else
  42. HideForm()
  43. End If
  44. End Sub
  45. End Class
好了,试试效果吧!祝好 章鱼哥

猜你在找的VB相关文章