几个库函数:
函数名: bioskey
功 能: 直接使用BIOS服务的键盘接口
用 法: int bioskey(int cmd);
程序例:
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#define RIGHT 0x01
#define LEFT 0x02
#define CTRL 0x04
#define ALT 0x08
int main(void)
{
int key, modifiers;
/* function 1 returns 0 until a key is pressed */
while (bioskey(1) == 0);
/* function 0 returns the key that is waiting */
key = bioskey(0);
/* use function 2 to determine if shift keys were used */
modifiers = bioskey(2);
if (modifiers)
{
printf("[");
if (modifiers & RIGHT) printf("RIGHT");
if (modifiers & LEFT) printf("LEFT");
if (modifiers & CTRL) printf("CTRL");
if (modifiers & ALT) printf("ALT");
printf("]");
}
/* print out the character read */
if (isalnum(key & 0xFF))
printf("'%c'/n", key);
else
printf("%#02x/n", key);
return 0;
}
下拉菜单:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void vMainMenu()
{
printf("File(F1)/tEdit(F2)/tHelp(F3)/n");
}
void vPrintFileMenu()
{
system("cls");
vMainMenu();
printf("┌───────┐/n");
printf("│Open Ctrl+F2│/n");
printf("│Save Ctrl+F3│/n");
printf("│Exit Ctrl+F4│/n");
printf("└───────┘/n");
}
int main()
{
int fF1 = 0;
vMainMenu();
while(1)
{
if(GetAsyncKeyState(VK_F1)<0)
{
if(fF1 == 0){vPrintFileMenu();fF1=1;}
else{system("cls");fF1=0;vMainMenu();};
Sleep(100);
}
if(GetAsyncKeyState(VK_F5)<0)
break;
}
system("pause");
return 0;
}
颜色的定义:
#include <windows.h>
void Gotoxy(int x, int y) //定位坐标位置,x为控制台的列,y为控制台的行。即定位到y行x列处
{
int xx=0x0b;
HANDLE hOutput;
COORD loc;
loc.X = x; loc.Y=y;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput, loc);
return;
}
void SetColor(int fg,int bg) //控制台颜色设置。fg为控制台前景色,bg为控制台背景色,取值为0-16
{
WORD wColor;
HANDLE hnd=GetStdHandle(STD_OUTPUT_HANDLE); //得到控制器的句柄
bg<<=4;
wColor=(fg & 0x000f )|(bg & 0x00f0);
SetConsoleTextAttribute(hnd,wColor);
return;
}
1亮蓝色
2绿色
3蓝色
4红色
5紫色6暗黄7白8暗白9深蓝10叶绿色11蓝绿色12红13亮紫14亮黄15白16黑