【お題】引っかけ問題(締め切り10月27日(日)23時)

C#で、FormをShowDialog()、つまりモーダルダイアログで表示してからの話です。
ここで、当のForm以外をマウスでクリックしたりすると、当のFormのタイトルバーがチカチカしますよね。
このとき、当のFormにはどんなイベントが発生しているのでしょうか?

当のForm以外をクリックしたときに、「ダイアログのボタンを押して、値を選択してください」のようなメッセージを出したいと思っています。
そのために、そのイベントを使えばいいのかな、と思いました。
どうぞ、よろしくお願いします。

A 回答 (1件)

こんにちは。


もっと違ったアプローチがあるかもしれませんが
WM_WINDOWPOSCHANGINGメッセージを捕まえてはどうでしょうか。

仮にForm1からForm2をモーダルで呼び出したとして

protected override void WndProc(ref Message m)
{
// WM_WINDOWPOSCHANGING...0x0046
if ( m.Msg == 0x0046 )
{
System.Diagnostics.Debug.Write("キタコレ!");
}

base.WndProc(ref m);
}

Form2がFlashされるタイミングで
上記のデバッグ用文字列が出力されます。
そうでない時も同じイベントを拾いますが
パラメータを見たりしてうまく判断できかもしれません。

参考URLにWM_WINDOWPOSCHANGINGメッセージの詳細があります。

参考URL:http://www.winapi-database.com/Message/WM/WM_WIN …
    • good
    • 0
この回答へのお礼

情報ありがとうございました。

最終的には、m.Msgが
0x46 → 0x86(m.Param==0x00) → 0x86(m.Param=0x01)
の3連コンボの時が、そのタイミングであることがわかりました。

どうもありがとうございました。

お礼日時:2006/04/28 21:08

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


おすすめ情報