Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
フォームのイベント実験
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=11254#CommentId25572
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
YuO
 (社会人)
投稿日時
2013/5/7 02:25:29
VisibleChanged内で
・MessageBox APIを実行
・Formを作ってShowDialog(Me)を実行
のどちらでもShownがOnVisibleChanged終了より前に動く,ということから,APIレベル,DialogBox系APIの内部動作が関係していそうです。
VisibleChangedに入った後から,OnShownまでにWndProcメソッドで捕らえたメッセージは以下の通りです。
・WM_CANCELMODE
・WM_ENABLE (wParam = 0)
・WM_WINDOWPOSCHANGING (flags = &h0037 : SWP_DRAWFRAME Or SWP_NOACTIVATE Or SWP_NOZORDER Or SWP_NOMOVE Or SWP_NOSIZE)
・WM_ACTIVATEAPP (wParam = 1, lParam = 1)
・WM_DWMNCRENDERINGCHANGED (wParam = 1)
・unknwon (&hC1E4, RegisterWindowMessage)
直接的には最後のuMsgが&hC1E4の時にShownが呼び出されるようですが,
これ自体はRegisterWindowMessage APIで登録された値であると思われるため,
これをAPIがSendしているとは考えられず,この値をSendMessageしているコードがあると思われます。
また,それ以外のメッセージを投げてもOnShownは呼ばれませんでした。
.NETのソースコードを解析していけば,なぜShownが呼ばれるかが見つかるかもしれませんが,そこまでは解析していません。