AmirAmiri
سه شنبه 07 خرداد 1387, 09:21 صبح
سلام دوستان خسته نباشید.
مسئله : من برنامه ای نوشتم که کارش مخفی کردن TaskBar هست اما به صورت انیمیشن. یعنی اینکه بعد از کلیک روی کامند یک TaskBar باید از سمته راست به سمت چپ بره و مخفی بشه (نه اینکه حرکت کنه بلکه آروم آروم مخفی بشه) و زمانی که روی کامند دو کلیک کردم از سمت چپ به راست نمایش داده بشه.
مشکل : این عمل روی محتویات فرم درست عمل میکنه اما زمانیکه هندل TaskBar رو بهش میدم انیمیشن نمیشه.
برای انیمیشن کردن از تابع AnimateWindow استفاده کردم و برای بدست آوردن هندل TaskBar از FindWindow استفاده کردم.
Const AW_HOR_POSITIVE = &H1
Const AW_HOR_NEGATIVE = &H2
Const AW_VER_POSITIVE = &H4
Const AW_VER_NEGATIVE = &H8
Const AW_CENTER = &H10
Const AW_HIDE = &H10000
Const AW_ACTIVATE = &H20000
Const AW_SLIDE = &H40000
Const AW_BLEND = &H80000
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean
Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpCaption As String) As Long
Private Declare Function SetWindowPos Lib "User32.dll" (ByVal shWnd As Long, ByVal MainhWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal CX As Long, ByVal CY As Long, ByVal uFlags As Long) As Long
Dim TashBarHandle As Long
Dim Delay As Long
Private Sub Command1_Click()
AnimateWindow TashBarHandle, Delay, AW_HOR_NEGATIVE Or AW_HIDE 'Hide TaskBar
AnimateWindow Text1.hwnd, Delay, AW_HOR_NEGATIVE Or AW_HIDE 'Hide TextBox
End Sub
Private Sub Command2_Click()
AnimateWindow TashBarHandle, Delay, AW_HOR_POSITIVE 'Show TaskBar
AnimateWindow Text1.hwnd, Delay, AW_HOR_POSITIVE 'Show TextBox
End Sub
Private Sub Command3_Click()
Call SetWindowPos(TashBarHandle, 0, 0, 0, 0, 0, &H80)
End Sub
Private Sub Command4_Click()
Call SetWindowPos(TashBarHandle, 0, 0, 0, 0, 0, &H40)
End Sub
Private Sub Form_Load()
Delay = 2000
TashBarHandle = FindWindow("Shell_Traywnd", "")
End Sub
اگه امکان داره بررسی کنید ببینید مشکلش چیه چون خیلی خیلی خیلی ضروریه. از تمامه کسانی که کمک میکنن کماله تشکر رو دارم.
مسئله : من برنامه ای نوشتم که کارش مخفی کردن TaskBar هست اما به صورت انیمیشن. یعنی اینکه بعد از کلیک روی کامند یک TaskBar باید از سمته راست به سمت چپ بره و مخفی بشه (نه اینکه حرکت کنه بلکه آروم آروم مخفی بشه) و زمانی که روی کامند دو کلیک کردم از سمت چپ به راست نمایش داده بشه.
مشکل : این عمل روی محتویات فرم درست عمل میکنه اما زمانیکه هندل TaskBar رو بهش میدم انیمیشن نمیشه.
برای انیمیشن کردن از تابع AnimateWindow استفاده کردم و برای بدست آوردن هندل TaskBar از FindWindow استفاده کردم.
Const AW_HOR_POSITIVE = &H1
Const AW_HOR_NEGATIVE = &H2
Const AW_VER_POSITIVE = &H4
Const AW_VER_NEGATIVE = &H8
Const AW_CENTER = &H10
Const AW_HIDE = &H10000
Const AW_ACTIVATE = &H20000
Const AW_SLIDE = &H40000
Const AW_BLEND = &H80000
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean
Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpCaption As String) As Long
Private Declare Function SetWindowPos Lib "User32.dll" (ByVal shWnd As Long, ByVal MainhWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal CX As Long, ByVal CY As Long, ByVal uFlags As Long) As Long
Dim TashBarHandle As Long
Dim Delay As Long
Private Sub Command1_Click()
AnimateWindow TashBarHandle, Delay, AW_HOR_NEGATIVE Or AW_HIDE 'Hide TaskBar
AnimateWindow Text1.hwnd, Delay, AW_HOR_NEGATIVE Or AW_HIDE 'Hide TextBox
End Sub
Private Sub Command2_Click()
AnimateWindow TashBarHandle, Delay, AW_HOR_POSITIVE 'Show TaskBar
AnimateWindow Text1.hwnd, Delay, AW_HOR_POSITIVE 'Show TextBox
End Sub
Private Sub Command3_Click()
Call SetWindowPos(TashBarHandle, 0, 0, 0, 0, 0, &H80)
End Sub
Private Sub Command4_Click()
Call SetWindowPos(TashBarHandle, 0, 0, 0, 0, 0, &H40)
End Sub
Private Sub Form_Load()
Delay = 2000
TashBarHandle = FindWindow("Shell_Traywnd", "")
End Sub
اگه امکان داره بررسی کنید ببینید مشکلش چیه چون خیلی خیلی خیلی ضروریه. از تمامه کسانی که کمک میکنن کماله تشکر رو دارم.