1. 程式人生 > 其它 >在螢幕的任意位置輸出字元

在螢幕的任意位置輸出字元

技術標籤:C/C++

因為用到了 Windo游標定位需要使用 windows.h 標頭檔案中的SetConsoleCursorPosition函式,它的使用方式為:

SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD  dwCursorPosition);

hConsoleOutput表示控制檯緩衝區控制代碼,可通過GetStdHandle(STD_OUTPUT_HANDLE)來獲得;dwCursorPosition是游標位置,也就是第幾行第幾列,它是 COORD 型別的結構體。ws 作業系統的功能,所以本節的程式碼不能在 Linux 和 Mac OS 下執行。

例如,將游標定位到控制檯的第3行第3列:

//定義游標位置
COORD coord;
coord.X = 3;  //第3行
coord.Y = 3;  //第3列
//獲取控制檯緩衝區控制代碼,固定寫法
HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
//設定游標位置,固定寫法
SetConsoleCursorPosition(ConsoleHandle, coord);
#include <stdio.h>
#include <windows.h>

int main(){
    //定義游標位置
    COORD coord;
    coord.X = 3;  //第3行
    coord.Y = 3;  //第3列
    //獲取控制檯緩衝區控制代碼
    HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    //設定游標位置
    SetConsoleCursorPosition(ConsoleHandle, coord);
   
    printf("http://c.biancheng.net\n");

    return 0;
}

執行結果:

注意:視窗的左上角是第 0 行第 0 列,而不是我們通常所認為的第 1 行第 1 列。程式語言中的很多計數都是從 0 開始的,而不是從 1 開始。

#include <stdio.h>
#include <windows.h>

//設定游標位置
void setCursorPosition(int x, int y);
//設定文字顏色
void setColor(int color);

int main(){
    setColor(3);
    setCursorPosition(3, 3);
    puts("★");

    setColor(0XC);
    setCursorPosition(1, 1);
    puts("◆");

    setColor(6);
    setCursorPosition(6, 6);
    puts("■");

    return 0;
}

//自定義的游標定位函式
void setCursorPosition(int x, int y){
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//自定義的文字顏色函式
void setColor(int color){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color) ;
}