[C/C++]使用上下左右控制菜单项
2014-06-21 16:15
441 查看
实现功能:
使用上下键切换菜单项
使用左右键返回或进入
使用Esc键退出菜单
编译通过:VS2013
代码如下:
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <conio.h>
#include <windows.h>
#define MI 3//menu iterm number
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main(void)
{
int fr = 0;//sign to row
int fc = 0;//sign to column
int g;//gets the keyboard value
string bars = "\n\n\t\t------------------------------------------------\n"
"\t\t|***-------------- Menu Bar --------------***|\n"
"\t\t------------------------------------------------\n";
string menu[MI] = { "menu1", "menu2", "menu3" };
string pich = "\t\t\t\t ->\t";
loop:
system("cls");
cout << bars;
do {
gotoxy(0, 6);
for (int index = 0; index < MI; ++index)
{
if (fr == index)
{
cout << pich;
cout << menu[index] << endl;
}
else
cout << "\t\t\t\t\t" << menu[index] << endl;
if (fc != 0)
{
system("cls");
cout << bars;
if (fc == 1)
{
if (fr == 0)
cout << "\t\t\t\tenter " << menu[0];
else if (fr == 1)
cout << "\t\t\t\tenter " << menu[1];
else if (fr == 2)
cout << "\t\t\t\tenter " << menu[2];
}
else if (fc == -1)
cout << "\t\t\tReturn to the previous menu!";
cout << "\n\t\t\t\t";
system("pause");
fc = 0;
goto loop;
}
}
g = _getch();
switch (g)
{
case 0x48: //up
--fr;
if (fr < 0)
fr = MI - 1;
break;
case 0x50: //down
++fr;
if (fr > MI - 1)
fr = 0;
break;
case 0x4b: //left
fc = -1;
break;
case 0x4d: //right
fc = 1;
break;
}
} while (g != 0x1b); //Esc to quit
return 0;
}
使用上下键切换菜单项
使用左右键返回或进入
使用Esc键退出菜单
编译通过:VS2013
代码如下:
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <conio.h>
#include <windows.h>
#define MI 3//menu iterm number
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main(void)
{
int fr = 0;//sign to row
int fc = 0;//sign to column
int g;//gets the keyboard value
string bars = "\n\n\t\t------------------------------------------------\n"
"\t\t|***-------------- Menu Bar --------------***|\n"
"\t\t------------------------------------------------\n";
string menu[MI] = { "menu1", "menu2", "menu3" };
string pich = "\t\t\t\t ->\t";
loop:
system("cls");
cout << bars;
do {
gotoxy(0, 6);
for (int index = 0; index < MI; ++index)
{
if (fr == index)
{
cout << pich;
cout << menu[index] << endl;
}
else
cout << "\t\t\t\t\t" << menu[index] << endl;
if (fc != 0)
{
system("cls");
cout << bars;
if (fc == 1)
{
if (fr == 0)
cout << "\t\t\t\tenter " << menu[0];
else if (fr == 1)
cout << "\t\t\t\tenter " << menu[1];
else if (fr == 2)
cout << "\t\t\t\tenter " << menu[2];
}
else if (fc == -1)
cout << "\t\t\tReturn to the previous menu!";
cout << "\n\t\t\t\t";
system("pause");
fc = 0;
goto loop;
}
}
g = _getch();
switch (g)
{
case 0x48: //up
--fr;
if (fr < 0)
fr = MI - 1;
break;
case 0x50: //down
++fr;
if (fr > MI - 1)
fr = 0;
break;
case 0x4b: //left
fc = -1;
break;
case 0x4d: //right
fc = 1;
break;
}
} while (g != 0x1b); //Esc to quit
return 0;
}
相关文章推荐
- Windows Form(.NET,C#)程序使用MFC控件(treeview)DLL,treeview上面的上下左右键不工作
- ArcEngine中使用上下左右键移动地图功能的实现
- css3 来实现图片在指定容器内等比例缩放,并控制中上下左右居中
- C++:使用用户控制循环/使用哨兵值控制循环
- 大一上学期C++第11周实验报告(三)学会使用循环控制语句解决实际问题
- ArcEngine中使用上下左右键移动地图
- JS实现用键盘控制DIV上下左右+放大缩小与变色
- android之DPAD上下左右四个键控制
- C++命名控制(static和namespace的使用)
- 使用C++与SFML编写一个简单的撞球游戏Part6——添加弹板控制与弹球
- ArcEngine中使用上下左右键移动地图
- Vi乱码/上下左右 backspace不能使用的问题
- Javascript控制Listbox左右/上下移动方法集合
- python 键盘上下左右控制
- 关于声音的前后左右上下的控制以及单声道立体声的区别
- 在winform中捕获上下键左右键等控制建的KeyPress事件
- symbian 基本触摸动作的使用(判断上下,左右等手势)
- 使用javascript操作多选列表框,实现动态增加删除,左右移动,上下排序移动等功能。
- linux下使用oracle无法使用上下左右光标键
- 【AS3代码】键盘控制影片剪辑上下左右移动!!