プロが教える店舗&オフィスのセキュリティ対策術

VC++6.0で親ダイアログで作成した子ダイアログをモードレスで表示しています。(ShowWindowで表示した後、子ダイアログが終了するまでループ)

両方のダイアログに、OKボタンとキャンセルボタンしかない時には、リターンキー・ESCキーを押せば子ダイアログが終了していました。(親ダイアログにフォーカスがあるときには親ダイアログが終了)

ところが、子ダイアログが表示されている間、親ダイアログ上でプログレスバーを表示・更新ようにしたら、とたんにリターンキー・ESCキーが効かなくなり、マウスのクリックでしか終了することができなくなりました。

WEBで調べてPreTranslateMessageを追加して、この関数にブレイクポイントを設定しましたが、呼ばれている様子がありません。

子ダイアログをマウスのボタンクリックで終了させた後は、親ダイアログのPreTranslateMessageでイベントが取得できます。

何をどうしたらリターンキー・ESCキーのイベントが取得できるようになるのでしょうか?

A 回答 (1件)

内容からだけですとなんとも言いがたい感じなのですが、


>(ShowWindowで表示した後、子ダイアログが終了するまでループ)
という辺りが少し気になります。
無限ループ等をしてWindowsに制御を戻していない、ということはないでしょうか。
もし、親ダイアログの中で無限ループ等をしていると、Windowsのメッセージ(この場合はESCキー等)を処理できないような気がします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/11/02 04:05

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