アクセラレータキーについて – プログラミング – Home

アクセラレータキーについて
 
通知
すべてクリア

[解決済] アクセラレータキーについて


お茶
 お茶
(@お茶)
ゲスト
結合: 20年前
投稿: 42
Topic starter  

リソースでアクセラレータを定義したのですが、動作が変なので質問します。

// リソース内
MainMenu ACCELERATORS
{
^h, 1000
^x, 2000
}

// アプリケーション内
HACCEL hAccel = LoadAccelerators(hInst, MainMenu);
MSG msg;
while(GetMessage(&msg, 0, 0, 0)){
if(TranslateAccelerator(hwnd, hAccel, &msg) ==0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;

上のようにメッセージループを定義し、Ctrl+Hを押したら置換ダイアログを表示するよう
にWM_COMMANDを書きました。
実際Ctrl+Hでダイアログは表示されるのですが、Backspaceキーを押しただけでもダイア
ログが表示されてしまいます。
Backspaceキーはキーイベントとして必要なのでこれでは困ります。
Ctrl+Hってアクセラレータキーとして使用してはまずいのでしょうか?
Ctrl+HはWM_COMMANDに変換し、Backspaceキーは変換しないようにするにはどうしたらい
いのでしょうか?

環境はWinXPSp2 + VC++6.0SP6 MFC未使用です。


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

Ctrl+HもBackspaceも同じASCII文字に変換されるので、
仮想キーコードで判定します。

H, 1000 VIRTKEY, CONTROL


返信引用
お茶
 お茶
(@お茶)
ゲスト
結合: 20年前
投稿: 42
Topic starter  

ありがとうございます。
アドバイスの通りリソースを書き換えたら直りました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました