home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / Calendar_o2043231182007.psc / ctlFader2.ctl < prev    next >
Text File  |  2006-09-16  |  8KB  |  273 lines

  1. VERSION 5.00
  2. Begin VB.UserControl Fader 
  3.    ClientHeight    =   330
  4.    ClientLeft      =   0
  5.    ClientTop       =   0
  6.    ClientWidth     =   630
  7.    ForwardFocus    =   -1  'True
  8.    HasDC           =   0   'False
  9.    InvisibleAtRuntime=   -1  'True
  10.    ScaleHeight     =   330
  11.    ScaleWidth      =   630
  12.    Windowless      =   -1  'True
  13.    Begin VB.Label lbName 
  14.       AutoSize        =   -1  'True
  15.       BackColor       =   &H0000FFFF&
  16.       BorderStyle     =   1  '│µ╜u⌐T⌐w
  17.       Caption         =   "Name"
  18.       BeginProperty Font 
  19.          Name            =   "MS Sans Serif"
  20.          Size            =   8.25
  21.          Charset         =   0
  22.          Weight          =   700
  23.          Underline       =   0   'False
  24.          Italic          =   0   'False
  25.          Strikethrough   =   0   'False
  26.       EndProperty
  27.       ForeColor       =   &H000000C0&
  28.       Height          =   255
  29.       Left            =   0
  30.       TabIndex        =   0
  31.       Top             =   15
  32.       Width           =   555
  33.    End
  34. End
  35. Attribute VB_Name = "Fader"
  36. Attribute VB_GlobalNameSpace = False
  37. Attribute VB_Creatable = True
  38. Attribute VB_PredeclaredId = False
  39. Attribute VB_Exposed = False
  40. Option Explicit
  41.  
  42. 'This code is based om a submission to PSC by Ed Preston
  43.  
  44. Public Enum FadingSpeed
  45.     [Fade Slow] = 1
  46.     [Fade Medium] = 2
  47.     [Fade Fast] = 4
  48.     [Fade Very Fast] = 8
  49. End Enum
  50.  
  51. 'Properties
  52. Private Const pnEnabled         As String = "Enabled"
  53. Private Const pnFadeIn          As String = "FadeInSpeed"
  54. Private Const pnFadeOut         As String = "FadeOutSpeed"
  55. Private Const pnOpacity         As String = "Opacity"
  56. Private myEnabled               As Boolean
  57. Private myFadeInSpeed           As FadingSpeed
  58. Private myFadeOutSpeed          As FadingSpeed
  59. Private myOpacity               As Long
  60.  
  61. 'Private variables
  62. Private Alpha                   As Long
  63. Private ParhWnd                 As Long
  64. Private Internal                As Boolean
  65.  
  66. 'Events
  67. Public Event FadeInReady()
  68. Public Event FadeOutReady()
  69.  
  70. 'Win API
  71. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  72. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  73. Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
  74. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  75.  
  76. Private Declare Function OSVersion Lib "kernel32" Alias "GetVersion" () As Long
  77. Private Const RequiredVersion As Long = 5
  78.  
  79. 'Win Consts
  80. Private Const WS_EX_LAYERED     As Long = &H80000
  81. Private Const GWL_EXSTYLE       As Long = -20
  82. Private Const LWA_ALPHA         As Long = 2
  83.  
  84. Public Property Let Enabled(ByVal nwEnabled As Boolean)
  85. Attribute Enabled.VB_Description = "Sets/returns whether the Control is operable."
  86.  
  87.     myEnabled = (nwEnabled <> False) And WindowsIsSuitable
  88.     PropertyChanged pnEnabled
  89.  
  90. End Property
  91.  
  92. Public Property Get Enabled() As Boolean
  93.  
  94.     Enabled = myEnabled
  95.  
  96. End Property
  97.  
  98. Public Sub FadeIn()
  99.  
  100.     If myEnabled Then
  101.         For Alpha = Alpha To (myOpacity / 100) * 255 Step myFadeInSpeed
  102.             SetLayeredWindowAttributes ParhWnd, 0, Alpha, LWA_ALPHA
  103.             DoEvents
  104.             Sleep 1
  105.         Next Alpha
  106.         Alpha = Alpha - myFadeInSpeed
  107.         If myOpacity = 100 Then
  108.             SetWindowLong hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) And Not WS_EX_LAYERED
  109.         End If
  110.         If Not Internal Then
  111.             RaiseEvent FadeInReady
  112.         End If
  113.       Else 'MYENABLED = FALSE
  114.         If Not Internal Then
  115.             SetLayeredWindowAttributes ParhWnd, 0, 255, LWA_ALPHA
  116.         End If
  117.     End If
  118.  
  119. End Sub
  120.  
  121. Public Property Get FadeInSpeed() As FadingSpeed
  122.  
  123.     FadeInSpeed = myFadeInSpeed
  124.  
  125. End Property
  126.  
  127. Public Property Let FadeInSpeed(ByVal nwFadeInSpeed As FadingSpeed)
  128.  
  129.     If nwFadeInSpeed = [Fade Very Fast] Or nwFadeInSpeed = [Fade Fast] Or nwFadeInSpeed = [Fade Medium] Or nwFadeInSpeed = [Fade Slow] Then
  130.         myFadeInSpeed = nwFadeInSpeed
  131.         PropertyChanged pnFadeIn
  132.       Else 'NOT NWFADEINSPEED...
  133.         ERR.Raise 380
  134.     End If
  135.  
  136. End Property
  137.  
  138. Public Sub FadeOut()
  139.  
  140.     If myEnabled Then
  141.         SetWindowLong ParhWnd, GWL_EXSTYLE, GetWindowLong(ParhWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
  142.         For Alpha = Alpha To IIf(Internal, (myOpacity / 100) * 255, 0) Step -myFadeOutSpeed
  143.             SetLayeredWindowAttributes ParhWnd, 0, Alpha, LWA_ALPHA
  144.             DoEvents
  145.             Sleep 1
  146.         Next Alpha
  147.         Alpha = Alpha + myFadeOutSpeed
  148.         If Not Internal Then
  149.             RaiseEvent FadeOutReady
  150.         End If
  151.       Else 'MYENABLED = FALSE
  152.         If Not Internal Then
  153.             SetLayeredWindowAttributes ParhWnd, 0, 0, LWA_ALPHA
  154.         End If
  155.     End If
  156.  
  157. End Sub
  158.  
  159. Public Property Get FadeOutSpeed() As FadingSpeed
  160.  
  161.     FadeOutSpeed = myFadeOutSpeed
  162.  
  163. End Property
  164.  
  165. Public Property Let FadeOutSpeed(ByVal nwFadeOutSpeed As FadingSpeed)
  166.  
  167.     If nwFadeOutSpeed = [Fade Very Fast] Or nwFadeOutSpeed = [Fade Fast] Or nwFadeOutSpeed = [Fade Medium] Or nwFadeOutSpeed = [Fade Slow] Then
  168.         myFadeOutSpeed = nwFadeOutSpeed
  169.         PropertyChanged pnFadeOut
  170.       Else 'NOT NWFADEOUTSPEED...
  171.         ERR.Raise 380
  172.     End If
  173.  
  174. End Property
  175.  
  176. Public Property Get Opacity() As Long
  177. Attribute Opacity.VB_Description = "Percent value of opacity."
  178.  
  179.     Opacity = myOpacity
  180.  
  181. End Property
  182.  
  183. Public Property Let Opacity(ByVal nwOpacity As Long)
  184.  
  185.   Dim PreviousOpacity   As Long
  186.  
  187.     PreviousOpacity = myOpacity
  188.     If nwOpacity >= 25 And nwOpacity <= 100 Then
  189.         myOpacity = nwOpacity
  190.         PropertyChanged pnOpacity
  191.         If Ambient.UserMode Then
  192.             Internal = True
  193.             If myOpacity > PreviousOpacity Then
  194.                 FadeIn
  195.                 RaiseEvent FadeInReady
  196.               ElseIf myOpacity < PreviousOpacity Then 'NOT MYOPACITY...
  197.                 FadeOut
  198.                 RaiseEvent FadeOutReady
  199.               Else 'NOT MYOPACITY...
  200.                 RaiseEvent FadeOutReady
  201.             End If
  202.             Internal = False
  203.         End If
  204.       Else 'NOT NWOPACITY...
  205.         ERR.Raise 380
  206.     End If
  207.  
  208. End Property
  209.  
  210. Private Sub UserControl_InitProperties()
  211.  
  212.     myFadeInSpeed = [Fade Medium]
  213.     myFadeOutSpeed = [Fade Medium]
  214.     myEnabled = WindowsIsSuitable
  215.     myOpacity = 100
  216.  
  217. End Sub
  218.  
  219. Private Sub UserControl_Paint()
  220.  
  221.     lbName = Ambient.DisplayName
  222.     UserControl_Resize
  223.  
  224. End Sub
  225.  
  226. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  227.  
  228.     With PropBag
  229.         myEnabled = .ReadProperty(pnEnabled, True) And WindowsIsSuitable
  230.         myFadeInSpeed = .ReadProperty(pnFadeIn, [Fade Medium])
  231.         myFadeOutSpeed = .ReadProperty(pnFadeOut, [Fade Medium])
  232.         myOpacity = .ReadProperty(pnOpacity, 100)
  233.     End With 'PROPBAG
  234.  
  235.     If Ambient.UserMode Then
  236.         ParhWnd = Parent.hWnd
  237.         If WindowsIsSuitable Then
  238.             SetWindowLong ParhWnd, GWL_EXSTYLE, GetWindowLong(ParhWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
  239.             SetLayeredWindowAttributes ParhWnd, 0, 0, LWA_ALPHA
  240.         End If
  241.         Alpha = 1
  242.     End If
  243.  
  244. End Sub
  245.  
  246. Private Sub UserControl_Resize()
  247.  
  248.     Size lbName.Width, lbName.Height
  249.  
  250. End Sub
  251.  
  252. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  253.  
  254.     With PropBag
  255.         .WriteProperty pnEnabled, myEnabled, WindowsIsSuitable
  256.         .WriteProperty pnFadeIn, myFadeInSpeed, [Fade Medium]
  257.         .WriteProperty pnFadeOut, myFadeOutSpeed, [Fade Medium]
  258.         .WriteProperty pnOpacity, myOpacity, 100
  259.     End With 'PROPBAG
  260.  
  261. End Sub
  262.  
  263. Private Function WindowsIsSuitable() As Boolean
  264.  
  265.     WindowsIsSuitable = ((OSVersion And &HFF&) >= RequiredVersion)
  266.     
  267.     'uncoment next line for experiments with other Windows'es
  268.    'WindowsIsSuitable = True
  269.     
  270. End Function
  271.  
  272. ':) Ulli's VB Code Formatter V2.14.3 (21.08.2002 10:50:09) 42 + 185 = 227 Lines
  273.