在c ++中滚动菜单?如何更改if-switch?

时间:2015-10-05 14:34:10

标签: c++ scroll menu

你好我在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

1 个答案:

答案 0 :(得分:2)

我认为你正在混淆控制台程序和基于窗口的程序。 &#34;案例27&#34;控制台可以使用样式,但不适用于基于窗口的样式。

但如果您真的想使用开关样式,可以尝试

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

然后你可以在开关盒中有8种可能的组合

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