ページ 11

開いたウインドウを[ESC]キーで閉じるには

Posted: 2006年12月08日(金) 17:44
by yama
寒くなってきましたね。

MainWndでコマンドボタンを押したとき

Dim retcode As Long
retcode=DialogBox(hMainWnd,"View")
If retcode Then
End If

などでウインドウを表示したときに、[ESC]で閉じるものと閉じないものがあります。

ウインドウの方のスタイルなど同じ条件なのですが違いが見つかりません。
開いたウインドウに閉じるのコマンドボタンだけのときは、[ESC]で閉じました。
閉じるとキャンセル二つボタンをつけたときは閉じません。

どのような設定のときに閉じるのでしょうか?

Posted: 2006年12月10日(日) 23:07
by イグトランス
たしかESCを押すとIDの値がIDCANCELのWM_COMMANDメッセージがくるので,
それをダイアログプロシージャで処理してやればできると思います。

Posted: 2006年12月11日(月) 14:54
by yama
その後前記のプロジェクトの不要部分を削除しながら二つのコードの
違いを確認してみて次のことがわかりました。

ESCキーでウインドウが閉じる条件は

EditBoxがあり複数行にチェックが入っていること。
かつEditBoxにフォーカスがセットされているとき。


Sub Opt_Create(ByRef CreateStruct As CREATESTRUCT)
'hEditにフォーカスをセット
' SetFocus(GetDlgItem(hOpt, EditBox1))
End Sub

なぜかはわかりません・・

イグトランス (egtra)さんこんにちは
>IDCANCELのWM_COMMANDメッセージがくるので,
>それをダイアログプロシージャで処理してやればできると思います。

の方法はバックサーチなどを探してを研究してみます。ありがとうございました