最新閲覧日:

いわゆる、キーを押したときのスキャンコードを取得する
には MapVirtualKey でいいのでしょうか?
具体的にどういうふうに使うのかわかりません。
押したキーコードが画面に表示、または変数に入る、
というふうにしたいんです。
ヘルプをみてもなんだかちんぷんかんぷんです(泣)。
OS はWindows2000 VC6++ を使用しています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Windowsプログラミングの話ですよね?この質問。



てことは、メッセージループの中で、
WM_CHARをひろってそのときのwParamを見れば
キャラクタコードが入ってるはずですよ。

MapVirtualKeyってのはうろ覚えですが確か
キャラクタコードを仮想キーコードに変換する、じゃなきゃその逆、
みたいな関数だったと記憶しています。
自分Win98なんで2000のAPIはよく知りませんが。

もしかして「メッセージループって何?」ってな時は参考URLをどうぞ。
「猫でもわかるプログラミング」という滅法わかりやすいサイトです。

参考URL:http://www.kumei.ne.jp/c_lang/

この回答への補足

なんとか目星がつきました。
ヒントをいただきまして、本当に
ありがとうございました。

補足日時:2001/11/13 18:21
    • good
    • 0
この回答へのお礼

似たようなソースを入手し、例えば抜き出した以下で、
仮想キーコードらしきものが取れているようなんですが、
test = HIBYTE(GetAsyncKeyState( VK_LSHIFT ));

その次に
test2 = MapVirtualKey(test, 0)
・・・とやると、スキャンコードと別の数値が返って
来るので悩んでいるところだったりします。
2日いろいろやってるんですが・・・
URLを教えていただきありがとうございました。

お礼日時:2001/11/13 16:30

UINT MapVirtualKey(


UINT uCode, // 仮想キーコードまたはスキャンコード
UINT uMapType // 実行したい変換の種類
);

uMapType = 0をセットして、uCodeに仮想キーを設定すれば戻り値として
スキャンコードが返されます

この回答への補足

なんとか目星がつきました。
ヒントをいただきまして、本当に
ありがとうございました。

補足日時:2001/11/13 18:20
    • good
    • 0
この回答へのお礼

ありがとうございます。マイクロソフトのHPで
確認しました。しかし、以下で仮想キーコードらしき
ものが取れているようなんですが、
test = HIBYTE(GetAsyncKeyState( VK_LSHIFT ));

その次に
test2 = MapVirtualKey(test, 0)
・・・とやると、test2 に本来のスキャンコードと別の
数値が返って来るので悩んでいるところだったりします。
( VK_LSHIFT = 2a だが、128 が返って来る )
今も頭いたいです・・・

お礼日時:2001/11/13 16:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報