这就是我的代码目前的样子:
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(0x31)) {
//...
}
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(0x32)) {
//...
}
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(0x33)) {
//...
}
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(0x34)) {
//...
}
if (GetAsyncKeyState(VK_CONTROL) && GetAsyncKeyState(0x35)) {
//...
}
有没有更有效的方法来做到这一点,而不是每个循环多次调用GetAsyncKeyState?也许将函数值存储为整数然后使用switch语句?
另外,我不想使用RegisterHotKey。
答案 0 :(得分:1)
以下是一些提示。 0.调用func比直接使用值要慢。 1. if-else语句可以构建一个树。树应该通过路径压缩来优化。 您可以像这样宣传您的代码。
static bool keys[256];
int getkey(){ //Don't forget to call this before querying the "keys" array.
for(int i=0;i<256;i++)
GetAsyncKeyState(i);
return 0;
}
if(keys[VK_CONTROL])
{
if (keys[0x31]) {
//...
}
if (keys[0x32]) {
//...
}
if (keys[0x33]) {
//...
}
if (keys[0x34]) {
//...
}
if (keys[0x35]) {
//...
}
}