VC++怎样获取键盘是哪一个按键 按下了

VC++怎样获取键盘是哪一个按键 按下了,第1张

实现方案有以下几种:

1、用SetWindowsHookEx(WH_KEYBOARD_LL / WH_KEYBOARD);

2、反复检查GetKeyboardState的值,自己确定键是否被按下

3、其他的方法都不行的话,用DirectInput;

参考如下:

重载PreTranslate函数,在里面加判断:

if (WM_KEYDOWN == pMsg->message)

{

if ((VK_F10 == pMsg->wParam))

{

dosomething;

}

}

#include<iostream>/GetKeyState()函数是windowsh中的函数,当括号内的键被按下时,其值小于0,/

#include<windowsh>/并且只要在只要键处于被按下的状态,其值都会小于0,当键被松开时,其值大于0/

using namespace std;

int main()

{

while(1){

if((GetKeyState(VK_CONTROL)<0)&&(GetKeyState('A')<0)){

cout<<"CONTROL+A";

while(GetKeyState(VK_CONTROL)<0&&GetKeyState('A')<0) ;//只要键被按下,就会有一定的持续时间。

}

}

}

//自己耗费1天半的呕心沥血之作,希望对你有用!

循环遍历,查询到值相同的,就记录下, 然后保存到另一个Map即可

下面按照要求,写了一个参考代码,读完测试一下就懂了

import javautilArrayList;

import javautilArrays;

import javautilHashMap;

import javautilMap;

import javautilTreeMap;

public class Demo {

public static void main(String[] args) {

TreeMap<String, Integer> map = new TreeMap<String, Integer>();

mapput("a", 1);

mapput("b", 2);

mapput("c", 1);

mapput("d", 2);

//result 的键 是 Integer, 值是ArrayList,因为需要存的可能不是一个

HashMap<Integer, ArrayList<String>> result = new HashMap<Integer, ArrayList<String>>();

for (MapEntry<String, Integer> entry : mapentrySet()) {

String k=entrygetKey();

int v=entrygetValue();

if(resultcontainsKey(v)){//如果存在

resultget(v)add(k);

}else{//如果不存在

resultput(v, new ArrayList<String>(ArraysasList(k)));

}

}

Systemoutprintln(result);

}

}

以上就是关于VC++怎样获取键盘是哪一个按键 按下了全部的内容,包括:VC++怎样获取键盘是哪一个按键 按下了、在dev环境下,如何利用C语言获得键盘键值、java 在treemap 中怎么获取有相同值的键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9819535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存