• ベストアンサー

最小化時の事で・・・

最小化時の事についての質問です。(^^; ShowInTaskbar=Falseの状態で最小化ボタンを押すと、 アニメーションが下の方に向かって行われるのですが、 このアニメーションを”無し”または”上の方向”に する事はできるのでしょうか? 最小化ボタンを押した時はフォームを非表示にして タスクアイコンのみになるようにしているのですが、 最小化アニメーションが下方の為、何とかしたいです。 方法または、他に良い案などありましたら、 アドバイス等を宜しくお願いします。 m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.2

アニメーション止めるだけじゃダメ? なら、最小化をキャンセルしてやりゃいい フックしているから、必ずアンロードイベントを発生させるがヨロシ 非表示になった後、復帰に困るから、タイマーで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

noname#191236
質問者

お礼

度々回答を頂き、ほんとうにどうもありがとうございます 。 m(_ _)m 無事、やろうと思っていたことができるようになりました。 丁度今、フックというものについて色々調べているところで、 それについても参考になりました。 まだまだ覚える事がいっぱいです。(^^;ゞ これで締め切りたいと思います、ありがとうございました。

その他の回答 (1)

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1
noname#191236
質問者

お礼

先日の質問にも回答していただき、ありがとうございます。 参考URL先の方法でも最小化のアニメーションが、 ほとんど変わりませんでした・・・。(^^; 最小化ボタンを押した時に最小化せず、 フォームだけ隠すという事だけでもいいのですが。 もう少し締め切りを待ちたいと思います。 (自分でも検索中です。)