Visual C++ でモーダル ダイアログ ボックス内のアクセラレータ キーの使用方法

文書翻訳 文書翻訳
文書番号: 222829 - 対象製品
メモ Microsoft Visual C++ .NET (2002) は、Microsoft .NET Framework によって提供されるマネージ コード モデルとアンマネージ ネイティブ Windows コード モデルの両方をサポートします。 この資料の情報は、アンマネージ Visual C++ コードのみに適用されます。
すべて展開する | すべて折りたたむ

概要

アクセラレータ キーは、Windows アプリケーションの一般的なユーザー インターフェイス機能はつまり理由に限定のアプリケーションだけですか。 任意の作業ウィンドウ固定 (モーダル) ダイアログ ボックスにアクセラレータ キーの機能を追加する方法を説明します。

詳細

キーボード アクセラレータ アプリケーションのメイン メッセージ ループ内で、TranslateAccelerator() 関数を呼び出すによって処理されます。 ただし、モーダル ダイアログ ボックスの場合、(Windows に組み込まれている)] ダイアログ ボックス マネージャー メッセージ ループを使用変換し、メッセージをディスパッチします。 もちろん、このメッセージ ループは、アクセラレータを処理するよう設計されていない、いるため、それは、TranslateAccelerator() 関数を呼び出しません。

作業ウィンドウ固定 (モーダル) ダイアログ ボックスで、アクセラレータ キーを処理するダイアログ ボックスの PreTranslateMessage() をオーバーライドする必要がありますアクセラレータとして呼び出すことにより、メッセージを処理しようし、する機能:: TranslateAccelerator()。 このメソッドが失敗した場合処理し、基本クラスの PreTranslateMessage() を呼び出して続行されます。

この資料のために、お MFC MDI アプリケーションのバージョン] ダイアログ ボックスにアクセラレータ キーの機能を追加します。
  1. Test という新しい MFC MDI アプリケーションを作成します。
  2. リソース ID が"IDC_BUTTON1"、バージョン] ダイアログ ボックス リソースへのボタンを追加します。
  3. このボタンのハンドラーを追加し、アクセラレータ キーが動作するインジケーターとして次のコードを挿入ボタンをダブルクリックして:
    AfxMessageBox("Hello");
  4. リソースに新しいアクセラレータ表を挿入します。
  5. テーブルに、F5 キーを関連付けると、アクセラレータ キーを追加リソース ID"IDC_BUTTON1"にキー。
  6. メンバー変数、m_hAccelTable では、クラスに追加 CAboutBox:
    HACCEL  m_hAccelTable;
  7. CAboutBox::CAboutBox で m_hAccelTable の初期化:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. コード ウィザード (クラス ウィザード Visual C++ 6. 0 でおよびそれ以前のバージョン) を使用して、CAboutDlg を PreTranslateMessage のオーバーライドを追加します。
  9. CAboutBox::PreTranslateMessage() メソッドを追加、次のコード行:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. コンパイルし、CTestApp を実行します。

結果 アクセラレータ キー F5、CAboutBox がアクティブな button1 ハンドラーをトリガーするようになりました。

関連情報

アクセラレータ キーの作業ウィンドウ固定 (モーダル) ダイアログ ボックス内の処理については、ください「以下「サポート技術情報」(Microsoft Knowledge Base)。
100770 情報:"Modal/作業ウィンドウ固定"] ダイアログ ボックスのメイン ウィンドウでアクセラレータ キーを使用して

プロパティ

文書番号: 222829 - 最終更新日: 2006年11月21日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Foundation Class Library 4.2?を以下の環境でお使いの場合
    • Microsoft Visual C++ 4.1 Subscription
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ .NET 2003 Standard Edition
キーワード:?
kbhowto kbuidesign kbkeyaccel kbacceleratorkey kbmt KB222829 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:222829
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com