VB.Netでの質問です。

ウィンドウメッセージを受け取りイベントを起こすユーザーコントロールクラス
Class UserCtl
Private Event MyKeyDown()

Private Sub UserCtl_KeyDown() as Handels MyBase.KeyDown
RaiseEvent MyKeyDown
End Sub
End Class

プロセスA
MDI子フォームにユーザーコントロールを追加し、子フォームにて、UserCtl.MyKeyDownイベントプロシージャでユーザーコントロールがウィンドウメッセージを受け取ったと認識し処理をします。
MDI子フォームはMDI親フォームより、CloseメソッドでしかCloseしません。

プロセスB
FindWindowでMDI親フォーム, FindWindowExでMDI子フォーム、ユーザーコントロールハンドルを確認した上で、ユーザーコントロールにウィンドウメッセージをPostMessageします。

質問1
プロセスBからハンドルを探していますが、ウィンドウハンドル,ユーザーコントロールハンドルはいつまで有効なハンドルなのでしょうか?
Closeでしょうか、それとも、Disposeでしょうか?
質問2
MDI親フォームでMDI子フォームをCloseした後でも、UserCtl.MyKeyDownは発生できるものなのでしょうか?
質問3
ユーザーコントロールで親フォーム(MDI子フォーム)がCloseされた事を認識する方法はないでしょうか?
Me.Parent.IsDisposeでできるかなぁと考えているのですが。

よろしくお願いいたします。

A 回答 (1件)

こんにちは、じゃんぬねっと です。



そもそもウィンドウメッセージを使う意図がわかりません。
デリゲードなどで通知しましょう。

この回答への補足

解答ありがとうございます。
ウィンドウメッセージで通知してくるプロセスを.Netで作り直すならば、デリケートも考えますが既存プロセスとのI/Fは変更しないのでデリケートは使用できません。
どうも、質問の意図が伝わりきっていないようなので、もう少し粘ってみます。

補足日時:2005/04/04 22:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング