امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کم رنگ کردن یا شفاف کردن فرم در وی بی
نویسنده پیام
Javadvb آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 1
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
کم رنگ کردن یا شفاف کردن فرم در وی بی
:: امروز مي خواهم چگونگي ساخت يک 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
۰۷-اسفند-۱۳۸۴, ۱۹:۰۳:۵۲
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #2
 
دوست عزيز كارت ايراد داره به دو دليل :
1. اين پست نبايد تو اين قسمت باشه
2 . بايد يه مقالش مي كردي ميزاشتي تو سايت
۰۷-اسفند-۱۳۸۴, ۲۳:۴۰:۰۶
ارسال‌ها
پاسخ
Soheilvb آفلاین
کاربر با تجربه
****

ارسال‌ها: 513
موضوع‌ها: 49
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 0
( 129 تشکر در 46 ارسال )
ارسال: #3
سلام
سلام
لصفا الان درست كنيد
باز سايت نگن نا مرتب
ببخشيد و لي لطفا تا ديدين ببرين مقالات
مرسي
باي
۰۸-اسفند-۱۳۸۴, ۰۰:۰۳:۲۵
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  خواندن و ارسال کردن اطلاعات با پورت سریال SBRE77 18 20,157 ۱۱-مهر-۱۳۹۷, ۰۹:۴۶:۲۸
آخرین ارسال: reza1354
  [سوال] جایگزین کردن درشته GTAexcess 1 2,745 ۰۸-اسفند-۱۳۹۴, ۱۴:۴۷:۲۳
آخرین ارسال: Di Di
  ذخیره کردن نتیجه اجرای کد به صورت رشته alefpe 1 2,740 ۱۰-خرداد-۱۳۹۴, ۱۰:۲۰:۲۲
آخرین ارسال: lord_viper
  راست به چپ کردن منو و ریبون automa 3 3,615 ۰۵-اردیبهشت-۱۳۹۴, ۰۸:۳۶:۳۱
آخرین ارسال: automa
  [سوال] مشخص کردن فایلی که روی شبکه باز شده eppagh 0 2,131 ۲۲-فروردین-۱۳۹۴, ۱۴:۰۶:۵۱
آخرین ارسال: eppagh
  [سوال] مشکل جابجا کردن مقدار متغیر از ThisWorkbook به Worksheet_Change در اکسل eppagh 0 2,200 ۰۸-اسفند-۱۳۹۳, ۲۱:۴۷:۵۴
آخرین ارسال: eppagh
  مشکل در راند کردن شمارە lonelysam 1 2,139 ۱۶-بهمن-۱۳۹۳, ۱۵:۳۲:۰۴
آخرین ارسال: Payman62
  [سوال] فوکوس کردن روی یک پنجره برنامه خاص bvk 1 2,453 ۱۶-بهمن-۱۳۹۳, ۱۵:۲۷:۲۵
آخرین ارسال: Payman62
  روشن کردن يک lED با usb با کد نويسي در vb6 هوشیاری 14 22,100 ۲۹-آذر-۱۳۹۳, ۱۳:۳۹:۲۰
آخرین ارسال: avrpicarm
  [سوال] ساختن و پاک کردن چارت با نامی که خودم می دهم eppagh 0 1,884 ۰۱-آذر-۱۳۹۳, ۰۹:۵۲:۳۴
آخرین ارسال: eppagh

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS