Splash چیست؟
Splash صفحه ای است که به هنگام شروع به اجرای اکثر برنامه های کاربردی برای مدت زمان اندکی نمایش داده میشود و در آن توضیحاتی از قبیل نام برنامه یا برنامه نویسان ورژن برنامه و … در آن نمایش داده می شود که اغلب به صورت گرافیکی می باشد. امروز قصد دارم شما را با طریقه ساخت یک Splash در ویژوال بیسیک آشنا کنم . تا از این پس در برنامه های خودتون از یک Splash بتوانید استفاده کنید. در ادامه مطلب می توانید مقالات را مطالعه کنید.
می خواهم چگونگی ساخت یک Splash Screen برای برنامه هایی که مینویسیم را براتون شرح بدم . خوب باز هم باید توابع مورد نیاز را فراخوانی کرده و همچنین ثوایت مورد نیاز را تعریف کنیم
[vb]Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib “user32″ Alias _
“GetWindowLongA” (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib “user32″ Alias _
“SetWindowLongA” (ByVal hWnd As Long, ByVal nIndex As Long, ByVal _
dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib _
“user32″ (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha _
As Byte, ByVal dwFlags As Long) As Long [/vb]
نوع نمایش این Splash Screen به گونه ای است که میزان شفافیت فرم آن از ۰ به ۲۵۵ رسیده و دوباره کاهش یافته به صفر می رسد (یا بعبارت دیگر از حالت نامرئی به شفافیت کامل رسیده و دوباره از شفافیت آن کاسته شده و نامرئی می شود ) . خوب تنها Control که برای این برنامه نیاز داریمTimer می باشد . کدی که در Form_Load می بینید باعث می شود که فرم در ابتدای امر نامرئی باشد چون مقدار bAlfa آنرا ۰ داده ام
Private Sub Form_Load()
Dim Ret As Long
‘Set the window style to ‘Layered’
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
‘SetLayeredWindowAttributes Me.hWnd,0,(0-255),LWA_ALPHA
SetLayeredWindowAttributes Me.hWnd,0,0,LWA_ALPHA
Timer1.interval = 1
End
End Sub
در مرحله بعد برای اینکه فرم از حالت نامرئی به مرئی برسد (یعنی مقدار آن از ۰ به ۲۵۵ برسد) یک حلقه For نوشتم . حال برای اینکه فرم دوباره از حالت مرئی به نامرئی برشد یک حلقه For دیگر با گام افزایش -۱ نوشتم تا مقدار آنرا کاهش دهد .
Private Sub Timer1_Timer()
For i = 1 To 255
SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
Next i
For i = 255 To 1 Step -1
SetLayeredWindowAttributes Me.hWnd,0,CByte(i),LWA_ALPHA
Next i
Timer1.Enabled = False
End Sub
(*) یک نکته : این برنامه در سیستم عاملهای windows 2000 به بعد قابل اجراست , زیرا توابع مورد استفاده در این برنامه در ویندوزهای ۹۸ و ۹۵ وجود ندارد .