- 締切済み
モードレスダイアログのキー入力について
VC++6.0で親ダイアログで作成した子ダイアログをモードレスで表示しています。(ShowWindowで表示した後、子ダイアログが終了するまでループ) 両方のダイアログに、OKボタンとキャンセルボタンしかない時には、リターンキー・ESCキーを押せば子ダイアログが終了していました。(親ダイアログにフォーカスがあるときには親ダイアログが終了) ところが、子ダイアログが表示されている間、親ダイアログ上でプログレスバーを表示・更新ようにしたら、とたんにリターンキー・ESCキーが効かなくなり、マウスのクリックでしか終了することができなくなりました。 WEBで調べてPreTranslateMessageを追加して、この関数にブレイクポイントを設定しましたが、呼ばれている様子がありません。 子ダイアログをマウスのボタンクリックで終了させた後は、親ダイアログのPreTranslateMessageでイベントが取得できます。 何をどうしたらリターンキー・ESCキーのイベントが取得できるようになるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ishitani
- ベストアンサー率25% (10/40)
回答No.1
内容からだけですとなんとも言いがたい感じなのですが、 >(ShowWindowで表示した後、子ダイアログが終了するまでループ) という辺りが少し気になります。 無限ループ等をしてWindowsに制御を戻していない、ということはないでしょうか。 もし、親ダイアログの中で無限ループ等をしていると、Windowsのメッセージ(この場合はESCキー等)を処理できないような気がします。
お礼
親ダイアログのループで子ダイアログのメッセージをキャンセルすることで受け取ることが出来ました。ありがとうございました。