Last Updated 2002/07/09 |
Programming Tips Visual C++ MFC ダイアログ | 索 引 |
ダイアログアプリにアクセラレータ
2002/07/09
ダイアログベースのアプリケーションにアクセラレータを使う為,以下の様にしても動作しない. ダイアログにメニュー,ツール,ステータスバーの3つをつけて動作するようにした後に (1)リソースエディタで Accelerator を作りメニューバーと同じ ID をつける (2)アクセラレータキー(Ctrl+T)を登録する (3)メニューバーのアイテムのキャプションを[ツールバー(&T)\tCtrl+T]とする MDI&SDI ではこれだけで動作するが,ダイアログベースでは動作しない. API ベースであれば,ダイアログを CreateDialog して,自前のメッセージループを持つ. その中で,まずアクセラレータかどうかをチェック(TranslateAccelerator()) 次にダイアログのアクセラレータをチェック(IsDialogMessage()) MFC の場合は,PreTranslateMessage() でアクセラレータ変換すれば行ける. リソース ID が IDR_ACCELERATOR_1 の場合,
とする.Acl を CDlgTest のメンバにしておいて,CDialog::OnInitDialog() で1度やれば十分です。
参照 アクセラレータテーブルの設定方法 |
|