c++中的滚动菜单?如何改变它的开关

Scrolling menu in c++? how to change if to switch-case?

本文关键字:改变 开关 滚动 菜单 c++ 何改变      更新时间:2023-10-16

hello i make Scrolling menu in c++

do
{
    if (GetAsyncKeyState(VK_UP) != 0)
    {
        pointer -= 1;
        if (pointer <= -1)
        {
            pointer = 6;
        }
        ShowMenu(pointer,Menu);
    }
    else if (GetAsyncKeyState(VK_DOWN) != 0)
    {
        pointer += 1;
        if (pointer >= 7)
        {
            pointer = 0;
        }
        ShowMenu(pointer,Menu);
    }
    else if(GetAsyncKeyState(VK_RETURN) != 0)
    {
        switch (pointer)
        {
        case 0:
            //do somethink awesome!xD
            break;
        }
    }
    Sleep(150);
}
while(true);

,但如何改变这个如果换箱子?用GetAsyncKeyState吗?我可以这样写

char button;
switch(button){
case 27: // is escape
//to do
break;
}

但我想使用GetAsyncKeyState xD

我想你把控制台程序和基于窗口的程序搞混了。"case 27"样式可以用于控制台,但不能用于基于窗口的。

但是如果你真的想使用switch样式,你可以试试

(GetAsyncKeyState(VK_UP) != 0) << 2 + 
(GetAsyncKeyState(VK_DOWN) != 0) << 1 + 
(GetAsyncKeyState(VK_RETURN) != 0)

那么在开关情况下你可能有8种可能的组合

顺便说一下,您所做的是使用while循环来轮询keystate,这是一个CPU怪物,并且浪费太多。