アニメーション止めるだけじゃダメ?
なら、最小化をキャンセルしてやりゃいい
フックしているから、必ずアンロードイベントを発生させるがヨロシ
非表示になった後、復帰に困るから、タイマーで3秒後に復活させてる
上にしまいこみたいなら、#1のURLとこれを組み合わせたら、どこにでもアニメーションでける
試してやってみるがヨロシ
これフォームモジュールにはる
Option Explicit
Private Sub Form_Load()
Me.Timer1.Enabled = False
Me.Timer1.Interval = 3000
Call setSubClass(Me.hWnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call freeSubClass(Me.hWnd)
End Sub
Private Sub Timer1_Timer()
Me.Timer1.Enabled = False
Me.Visible = True
End Sub
これ標準モジュールにはる
Option Explicit
Private Const GWL_WNDPROC = (-4)
Private Const WM_SYSCOMMAND = &H112&
Private Const SC_MINIMIZE = &HF020&
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam 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 pPlocWnd As Long
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If (uMsg = WM_SYSCOMMAND) Then
If wParam = SC_MINIMIZE Then
If Form1.Visible Then
Form1.Visible = False
Form1.Timer1.Enabled = True
Exit Function
End If
End If
End If
PGMEND:
WindowProc = CallWindowProc(pPlocWnd, hWnd, uMsg, wParam, lParam)
End Function
'サブクラス化
Public Function setSubClass(inWnd As Long) As Long
Call freeSubClass(inWnd)
pPlocWnd = SetWindowLong(inWnd, GWL_WNDPROC, AddressOf WindowProc)
End Function
'サブクラス化解除
Public Function freeSubClass(inWnd As Long) As Boolean
If pPlocWnd <> 0 Then
Call SetWindowLong(inWnd, GWL_WNDPROC, pPlocWnd)
pPlocWnd = 0
End If
freeSubClass = True
End Function
お礼
度々回答を頂き、ほんとうにどうもありがとうございます 。 m(_ _)m 無事、やろうと思っていたことができるようになりました。 丁度今、フックというものについて色々調べているところで、 それについても参考になりました。 まだまだ覚える事がいっぱいです。(^^;ゞ これで締め切りたいと思います、ありがとうございました。