Console Functions

1.游標前往指定的座標


// Version:Visual C++ 6.0 
// 引入#include<windows.h> 
// x表示行值;y表示列值 
void gotoxy(int x, int y) 
{ 
	COORD point; point.X = x; point.Y = y; 
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point);
 }

2.設定游標的顯示比例

// Version:Visual C++ 6.0 
// 控制螢幕游標顯示 
// 引入#include<windows.h> 
// _bVisible:TRUE表示顯示游標;FALSE表示隱藏游標 
// CCI.dwSize:表示游標的大小佔字元的百分之幾,一般是25%。不懂意思的話, 
// 把CCI.bVisible設TRUE,然後CCI.dwSize設0、50、100,你就曉得囉!!! 
void SetCursorVisible(BOOL _bVisible,DWORD _dwSize) 
{ 
	CONSOLE_CURSOR_INFO CCI; 
	CCI.bVisible = _bVisible; 
	CCI.dwSize = _dwSize; 
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CCI); 
}

3.取得目前座標值

// Version:Visual C++ 6.0 
// 引入#include<windows.h> 
// 假設cx,cy是用來取目前座標值的變數,利用這個函數的方式就是: 
// getxy(&cx,&cy); 
void getxy(int *x,int *y) 
{ 
	CONSOLE_SCREEN_BUFFER_INFO csbi; 
	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); 
	*x = csbi.dwCursorPosition.X; 
	*y = csbi.dwCursorPosition.Y; 
}

4.清除螢幕


// Version:Visual C++ 6.0
// 轉載至Win32 Console Application Tools
// 引入#include<windows.h>
// 當然可以利用system("CLS");不一定要用這一個函數
void clrscr()
{
  COORD coordScreen = { 0, 0 }; 
  DWORD cCharsWritten; 
  CONSOLE_SCREEN_BUFFER_INFO csbi; 
  DWORD dwConSize; 
  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
  
  GetConsoleScreenBufferInfo(hConsole, &csbi); 
  dwConSize = csbi.dwSize.X * csbi.dwSize.Y; 
  FillConsoleOutputCharacter(hConsole, TEXT(' '),
                             dwConSize, 
                             coordScreen,
                             &cCharsWritten); 
  GetConsoleScreenBufferInfo(hConsole, &csbi); 
  FillConsoleOutputAttribute(hConsole,
                             csbi.wAttributes,
                             dwConSize,
                             coordScreen,
                             &cCharsWritten); 
  SetConsoleCursorPosition(hConsole, coordScreen); 
}

5.設定文字顏色與背景顏色

// Version:Visual C++ 6.0
// 轉載至Win32 Console Application Tools
// 引入#include<windows.h>
void setrgb(int color)
{
  switch (color)
  {
  case 0:    // White on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                        FOREGROUND_INTENSITY | FOREGROUND_RED |
                        FOREGROUND_GREEN | FOREGROUND_BLUE);
    break;
  case 1:    // Red on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                         FOREGROUND_INTENSITY | FOREGROUND_RED);
    break;
  case 2:    // Green on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                      FOREGROUND_INTENSITY | FOREGROUND_GREEN);
    break;
  case 3:    // Yellow on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                      FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
    break;
  case 4:    // Blue on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                      FOREGROUND_INTENSITY | FOREGROUND_BLUE);
    break;
  case 5:    // Magenta on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                     FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
    break;
  case 6:    // Cyan on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                    FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
    break;
  case 7:    // Black on Gray
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                  BACKGROUND_INTENSITY | BACKGROUND_INTENSITY);
    break;
  case 8:    // Black on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                  BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                  BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
    break;
  case 9:    // Red on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                  BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                  BACKGROUND_RED | BACKGROUND_GREEN |
                  BACKGROUND_BLUE | FOREGROUND_RED);
    break;
  case 10:    // Green on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                 BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                 BACKGROUND_RED | BACKGROUND_GREEN |
                 BACKGROUND_BLUE | FOREGROUND_GREEN);
    break;
  case 11:    // Yellow on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                 BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                 BACKGROUND_RED | BACKGROUND_GREEN |
                 BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN);
    break;
  case 12:    // Blue on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                 BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                 BACKGROUND_RED | BACKGROUND_GREEN |
                 BACKGROUND_BLUE | FOREGROUND_BLUE);
    break;
  case 13:    // Magenta on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                 BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                 BACKGROUND_RED | BACKGROUND_GREEN |
                 BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_BLUE);
    break;
  case 14:    // Cyan on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                 BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                 BACKGROUND_RED | BACKGROUND_GREEN |
                 BACKGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_BLUE);
    break;
  case 15:    // White on White
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                BACKGROUND_INTENSITY | FOREGROUND_INTENSITY |
                BACKGROUND_RED | BACKGROUND_GREEN |
                BACKGROUND_BLUE | FOREGROUND_RED |
                FOREGROUND_GREEN | FOREGROUND_BLUE);
    break;
  default :    // White on Black
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                FOREGROUND_INTENSITY | FOREGROUND_RED |
                FOREGROUND_GREEN | FOREGROUND_BLUE);
    break;
  }
}

6.設定console視窗大小

// Version:Visual C++ 6.0
// 轉載至Win32 Console Application Tools
// 引入#include<windows.h>
void SetScrnSize(int W, int H)
{
	SMALL_RECT SR;
	SR.Top = 0;
	SR.Left = 0;
	SR.Bottom = H-1;
	SR.Right = W-1;

	SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE),TRUE, &SR);

	COORD Sz;
	Sz.X = W;
	Sz.Y = H;

	SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),Sz);
}

7.Console Window成全螢幕

// Version:Visual C++ 6.0
// 轉載至C++ Learning Communcity
// 引入#include<windows.h>
void fullscreen() 
{ 
	keybd_event(VK_MENU,0x38,0,0); 
	keybd_event(VK_RETURN,0x1c,0,0); 
	keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0); 
	keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0); 
} 

 
回目錄
Edited By James On 2007/01/29 

Hosted by www.Geocities.ws

1