本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] ダイアログ上のエディットコントロールでリターンキーが取得できない

文書番号: 403855

最終更新日: 1999/03/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP403855

概要

この資料は、MFC でのプログラミングで ダイアログボックス上のエディットコントロ ールでリターンキーが取得できない原因とその対策について一例を紹介したものです。

詳細

<QUESTION>

ダイアログボックス上のエディットコントロールをサブクラス化し、リターンキーが 押されたらある処理を行おうとして OnChar() をオーバーライドしました。しかし、 通常のキーであれば問題ないのですが、リターンキーの場合は押しても OnChar() に 入ってきません。何がいけないのでしょう?

<ANSWER>

ダイアログボックス上では、一般的なキーの場合はエディットコントロールがそれら を処理しますが、リターンキーとタブキー、矢印キーについてはデフォルトプッシュ ボタンとフォーカスの移動をダイアログが行うため、エディットコントロールでは
受け付けません。それらをエディットコントロールで処理するには
CWnd::OnGetDlgCode をオーバーライドし、前述のキーをユーザ側で行うように
します。
  UINT CMyEdit::OnGetDlgCode()
  {
      return DLGC_WANTALLKEYS; // 全てのキー処理をコントロールで行う
  }
上記のオーバーライドを行った場合はフォーカスの移動とデフォルトボタンの処理
が自動では行われないので OnChar() の中で適切な処理をする必要があります。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO VC10 VC15 VC20 KB403855
Technology: kbAudDeveloper kbvc150 kbVC32bitSearch kbVCsearch

inserted by FC2 system