Splash چیست؟
Splash صفحه ای است که به هنگام شروع به اجرای اکثر برنامه های کاربردی برای مدت زمان اندکی نمایش داده میشود و در آن توضیحاتی از قبیل نام برنامه یا برنامه نویسان ورژن برنامه و … در آن نمایش داده می شود که اغلب به صورت گرافیکی می باشد. امروز قصد دارم شما را با طریقه ساخت یک Splash در ویژوال بیسیک آشنا کنم . تا از این پس در برنامه های خودتون از یک Splash بتوانید استفاده کنید


می خواهم چگونگی ساخت یک Splash Screen برای برنامه هایی که مینویسیم را براتون شرح بدم . خوب باز هم باید توابع مورد نیاز را فراخوانی کرده و همچنین ثوایت مورد نیاز را تعریف کنیم
کد PHP:
[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 LongByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib “user32″ Alias _
“SetWindowLongA” 
(ByVal hWnd As LongByVal nIndex As LongByVal _
dwNewLong 
As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib _
“user32″ 
(ByVal hWnd As LongByVal crKey As LongByVal bAlpha _
As ByteByVal dwFlags As Long) As Long [/vb
نوع نمایش این Splash Screen به گونه ای است که میزان شفافیت فرم آن از ۰ به ۲۵۵ رسیده و دوباره کاهش یافته به صفر می رسد (یا بعبارت دیگر از حالت نامرئی به شفافیت کامل رسیده و دوباره از شفافیت آن کاسته شده و نامرئی می شود ) . خوب تنها Control که برای این برنامه نیاز داریمTimer می باشد . کدی که در Form_Load می بینید باعث می شود که فرم در ابتدای امر نامرئی باشد چون مقدار bAlfa آنرا ۰ داده ام

کد PHP:
Private Sub Form_Load()

Dim Ret As Long
‘Set the window style to ‘Layered’
Ret 
GetWindowLong(Me.hWndGWL_EXSTYLE)
Ret Ret Or WS_EX_LAYERED
SetWindowLong Me
.hWndGWL_EXSTYLERet

‘SetLayeredWindowAttributes Me
.hWnd,0,(0-255),LWA_ALPHA
SetLayeredWindowAttributes Me
.hWnd,0,0,LWA_ALPHA

Timer1
.interval 1
End
End Sub 
در مرحله بعد برای اینکه فرم از حالت نامرئی به مرئی برسد (یعنی مقدار آن از ۰ به ۲۵۵ برسد) یک حلقه For نوشتم . حال برای اینکه فرم دوباره از حالت مرئی به نامرئی برشد یک حلقه For دیگر با گام افزایش -۱ نوشتم تا مقدار آنرا کاهش دهد .

کد PHP:
Private Sub Timer1_Timer()

For 
1 To 255
SetLayeredWindowAttributes Me
.hWnd,0,CByte(i),LWA_ALPHA
Next i

For 255 To 1 Step -1
SetLayeredWindowAttributes Me
.hWnd,0,CByte(i),LWA_ALPHA
Next i

Timer1
.Enabled False

End Sub 
(*) یک نکته : این برنامه در سیستم عاملهای windows 2000 به بعد قابل اجراست , زیرا توابع مورد استفاده در این برنامه در ویندوزهای ۹۸ و ۹۵ وجود ندارد .