㈠ vc6 打開工程,代碼沒顏色
控制台的設置函數名很多都以 SetConsole 或 GetConsole 開頭。
BOOL WINAPI SetConsoleTextAttribute(
__in HANDLE hConsoleOutput,
__in WORD wAttributes
);
第一個參數可用 GetStdHandle(STD_OUTPUT_HANDLE); 獲得;
第二個參數意義如下:
Attribute Meaning
FOREGROUND_BLUE Text color contains blue.
FOREGROUND_GREEN Text color contains green.
FOREGROUND_RED Text color contains red.
FOREGROUND_INTENSITY Text color is intensified.
BACKGROUND_BLUE Background color contains blue.
BACKGROUND_GREEN Background color contains green.
BACKGROUND_RED Background color contains red.
BACKGROUND_INTENSITY Background color is intensified.
COMMON_LVB_LEADING_BYTE Leading byte.
COMMON_LVB_TRAILING_BYTE Trailing byte.
COMMON_LVB_GRID_HORIZONTAL Top horizontal.
COMMON_LVB_GRID_LVERTICAL Left vertical.
COMMON_LVB_GRID_RVERTICAL Right vertical.
COMMON_LVB_REVERSE_VIDEO Reverse foreground and background attributes.
COMMON_LVB_UNDERSCORE Underscore.
這些是一個16位數的各個二進制位,你可以用位運算將這些屬性組合,如:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | BACKGROUND_INTENSITY);
如果要不等待回車立刻讀入鍵盤輸入,在conio.h中有個getch()函數。
如果要處理上下左右等鍵盤輸入,有個MapVirtualKey函數,可以上網查一下這個函數的具體用法。
如果要清屏,可以發送命令system("cls");,這個函數在stdlib.h中。
例如:
#include <stdio.h>
#include <conio.h> //getch()
#include <stdlib.h> //system()
#include <Windows.h> //WIN API
int main(){
//這里只有4個選項,如果選項數更改,後面相應部位也要更改
char*option[]=;
char key = 0;
int i, select = 0;
HANDLE ohandle = GetStdHandle(STD_OUTPUT_HANDLE);
while(true){
for(i=0;i<4;i++){//這里共4個選項
if(i==select)//設置焦點高亮
SetConsoleTextAttribute(ohandle,BACKGROUND_INTENSITY);
else if(i==select+1)//恢復設置
SetConsoleTextAttribute(ohandle,FOREGROUND_INTENSITY);
puts(option[i]);
}
SetConsoleTextAttribute(ohandle,FOREGROUND_INTENSITY);//恢復設置
key=getch();
if(key==0x1b) //ESC 鍵
return 0;
if(key==0xd) //Enter 鍵
break;
if(key<0){ //非ascii碼鍵2個位元組
key=getch();
switch(MapVirtualKey(key,MAPVK_VSC_TO_VK)){
case VK_UP:
select = (select+3)%4;//焦點上移,減一,滾動選擇,共4個選項
break;
case VK_DOWN:
select = (select+1)%4;//焦點下移,加一
break;
}
}
system("cls");
}
system("cls");
//TODO:use select to do something here !
printf("you selected : %s\n",option[select]);
//return 0; //not necessary in new standards
}
也可以用GetKeyState等函數,它返回上一次按鍵的信息,這些函數屬於win API(#include<windows.h>),並可以處理更多按鍵消息,如需要可查閱msdn。