○MFC の SDI MDI はそのまま書き込むだけでアクセラレータは動作します。
○MFC ダイアログにアクセラレータを付ける------------------------------------------------
@リソースでAcceleratorを追加
IDに既存のボタンなどのIDを入れます
Aダイアログクラスに次のデータメンバを追加します。
HACCEL hAccel; //アクセラレータのハンドル
BOnInitDialog関数を次のように定義し、リソースからアクセラレータテーブルを読みこみます。
BOOL C***Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
ここにいろいろあって・・・・・
hAccel = ::LoadAccelerators(::AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));//←追加
return TRUE;
}
Cアクセラレータキーストロークをメッセージに変換するために、クラスウィザードにてPreTranslateMessage関数を作成して追加します。
BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)
{
::TranslateAccelerator(m_hWnd, hAccel, pMsg);//←追加
return CDialog::PreTranslateMessage(pMsg);
}
○F1キーのヘルプの抑制---------------------------------------------------------------
ファンクションキーを登録すると、F1キーを押したときにヘルプが表示されます
それを抑制するには、
CWinAppクラスから派生したクラスのメッセージマップ
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
この1行を削除すれば、F1キーを押しても
ヘルプは出なくなります。
つまり、
***.cpp
の先頭の方にある
BEGIN_MESSAGE_MAP(CNjnmApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)←この行を削除
END_MESSAGE_MAP()
▲トップページ
>
Windows と C++