○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++