DOBON.NET DOBON.NETプログラミング掲示板過去ログ

最小化時のActivatedイベントについて

環境/言語:[Windows7 64bit、VB.NET2010、.NET Framework 4]
分類:[.NET]

VB.NETのActivated、Deactivateイベントについて質問させてください。

現在、FormのLoadイベントで生成したオブジェクトA(以下、Aとします)を、Formが非アクティブになった時に解放し、再びアクティブになった時に再生成したいと考えています。

想定では以下の通りです。
 Aを解放する時
 ・別アプリケーションの画面がアクティブになったとき
 ・画面を最小化した時

 Aを再生成するとき
 ・別アプリの画面から戻ってきた時
 ・最小化から復帰したとき

画面の最小化ボタンを押した時はDeactivateイベントのみが発生しますが、タスクバーのアイコンをクリックして最小化させた場合は、Deactivateが発生した直後にActivatedが発生してしまいます。

画面を最小化中は、Aをずっと開放した状態にしたいので、かなり困惑しています。

タスクバーのアイコンクリックで最小化させたとき、Activateイベントの発生を抑制するか、何か他の手がないものかと試行錯誤しておりますが、良い手を思いつきません。

何か分かる方がおられましたら、何卒ご教授願いたいと思います。
このケースだとWindowStateもNormalのままの上、戻ったときにActivatedが発生しないんですねぇ。
Activated/Deactivedイベントの代わりに、WndProcをオーバーライドしてWM_ACTIVATEを見れば何とかなりそうですかね。
タスクバーのアイコンクリックでの最小化時にはWM_ACTIVATEがWA_INACTIVE/非最小化で1回、WA_ACTIVE/最小化で1回の2件飛んでくるようです。その後最小化から戻るときにWA_ACTIVE/非最小化で飛んできます。

DOBON.NET | プログラミング道 | プログラミング掲示板