你好我在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
答案 0 :(得分:2)
我认为你正在混淆控制台程序和基于窗口的程序。 &#34;案例27&#34;控制台可以使用样式,但不适用于基于窗口的样式。
但如果您真的想使用开关样式,可以尝试
(GetAsyncKeyState(VK_UP) != 0) << 2 +
(GetAsyncKeyState(VK_DOWN) != 0) << 1 +
(GetAsyncKeyState(VK_RETURN) != 0)
然后你可以在开关盒中有8种可能的组合
顺便说一下,你所做的是使用while循环来轮询keystate,这是一个CPU怪物并浪费太多。