• ベストアンサー

ウインドウを最小化したとき

ウインドウを最小化しようとしたとき、 WM_SYSCOMMANDのSC_MINIMIZEが送られますが 最小化のアニメーションが完了したタイミング で処理を行いたいのですが可能でしょうか? 可能だとするとどのような方法をとるのはよいかも 宜しくお願いします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>そこまでシビアなところでしたら、 >SetWindowsHookExでWH_CALLWNDPROCRETかな? よく考えるとそこまではいらないか。 DefWindowProc()にわたしてるんですよね? WM_SYSCOMMAND。 ってことは、DefWindowProc()が制御を戻した後にチェックすればいいかと。

sha-girl
質問者

お礼

おっしゃるとおりでした。 LRESULT ret = DefWindowProc( hWnd , msg , wp , lp ); の後に処理を加えただけで、できました。 有難うございました。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

そこまでシビアなところでしたら、 SetWindowsHookExでWH_CALLWNDPROCRETかな? http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpipc/html/_win32_setwindowshookex.asp

sha-girl
質問者

お礼

処理後のメッセージのみの受け取りもできるんですね。 参考になりました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

WM_ACTIVATEかな? VisualStudioならSpy++でみてればすぐわかるかと。

sha-girl
質問者

お礼

ご回答ありがとうございます。 WM_ACTIVATEだと(WM_ACTIVATEAPPも)アニメーションが終了する前 に受け取ってしまいます。 アニメーションが終了するタイミングですが spy++でみるとWM_SYSCOMMANDのSC_MINIMIZE P(ポスト)→S(送出)→R(送出したメッセージの戻り値)を最後にアニメーションが終了します。 WM_SYSCOMMANDのR(送出したメッセージの戻り値)のタイミングを検出すれば いいのかと思うのですが、その方法がわかりません。