Javadvb
تازه وارد
ارسالها: 1
موضوعها: 1
تاریخ عضویت: اسفند ۱۳۸۴
تشکرها : 0
( 0 تشکر در 0 ارسال )
|
کم رنگ کردن یا شفاف کردن فرم در وی بی
:: امروز مي خواهم چگونگي ساخت يک Splash Screen براي برنامه هايي که مينويسيم را براتون شرح بدم . خوب باز هم بايد توابع مورد نياز را فراخواني کرده و همچنين ثوايت مورد نياز را تعريف کنيم
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
نوع نمايش اين Splash Screen به گونه اي است که ميزان شفافيت فرم آن از 0 به 255 رسيده و دوباره کاهش يافته به صفر مي رسد (يا بعبارت ديگر از حالت نامرئي به شفافيت کامل رسيده و دوباره از شفافيت آن کاسته شده و نامرئي مي شود ) . خوب تنها Control که براي اين برنامه نياز داريمTimer مي باشد . کدي که در Form_Load مي بينيد باعث مي شود که فرم در ابتداي امر نامرئي باشد چون مقدار bAlfa آنرا 0 داده ام
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 Sub
در مرحله بعد براي اينکه فرم از حالت نامرئي به مرئي برسد (يعني مقدار آن از 0 به 255 برسد) يک حلقه For نوشتم . حال براي اينکه فرم دوباره از حالت مرئي به نامرئي برشد يک حلقه For ديگر با گام افزايش -1 نوشتم تا مقدار آنرا کاهش دهد .
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
|
|
۰۷-اسفند-۱۳۸۴, ۱۹:۰۳:۵۲ |
|
تشکر شده توسط : |
|