• 締切済み

モードレスダイアログのキー入力について

VC++6.0で親ダイアログで作成した子ダイアログをモードレスで表示しています。(ShowWindowで表示した後、子ダイアログが終了するまでループ) 両方のダイアログに、OKボタンとキャンセルボタンしかない時には、リターンキー・ESCキーを押せば子ダイアログが終了していました。(親ダイアログにフォーカスがあるときには親ダイアログが終了) ところが、子ダイアログが表示されている間、親ダイアログ上でプログレスバーを表示・更新ようにしたら、とたんにリターンキー・ESCキーが効かなくなり、マウスのクリックでしか終了することができなくなりました。 WEBで調べてPreTranslateMessageを追加して、この関数にブレイクポイントを設定しましたが、呼ばれている様子がありません。 子ダイアログをマウスのボタンクリックで終了させた後は、親ダイアログのPreTranslateMessageでイベントが取得できます。 何をどうしたらリターンキー・ESCキーのイベントが取得できるようになるのでしょうか?

みんなの回答

  • ishitani
  • ベストアンサー率25% (10/40)
回答No.1

内容からだけですとなんとも言いがたい感じなのですが、 >(ShowWindowで表示した後、子ダイアログが終了するまでループ) という辺りが少し気になります。 無限ループ等をしてWindowsに制御を戻していない、ということはないでしょうか。 もし、親ダイアログの中で無限ループ等をしていると、Windowsのメッセージ(この場合はESCキー等)を処理できないような気がします。

fruipa
質問者

お礼

親ダイアログのループで子ダイアログのメッセージをキャンセルすることで受け取ることが出来ました。ありがとうございました。

専門家に質問してみよう