繼上個程式之後,我們已知道所有的步驟都要先取得 Handle,要 "畫" 出字串的時候就用 WriteConsole,但有時並不想從最左上角開始畫,這時我們必須介紹一個指令 SetConsoleCursorposition
BOOL WINAPI SetConsoleCursorposition(
__in HANDLE hConsoleOutput,
__in COORD dwCursorposition
);
這指令主要就是把游標移到指定的位置上,到時再輸出的時候也能直接從該位置輸出。裡面有用到一個結構是 COORD,原型如下
typedef struct _COORD {
SHORT X;
SHORT Y;
} COORD,
*PCOORD;
事實上它為了方便紀錄整個 Console Window 座標所設的 struct ,並不難。當使用者將 COORD 之 object 填寫完後再塞到 SetConsoleCursorposition 後,便可指定目前游標位置,從那開始輸出。
原始碼
/*
console to window - how to set the cursor in the window
- by Edison.X.
*/
#include <windows.h>
#include <stdio.h>
#define BUFFER_LEN 256
int main()
{
const char buffer[BUFFER_LEN] = "Hello, World!!";
HANDLE hin;
DWORD WriteWord;
COORD pos;
hin = GetStdHandle(STD_OUTPUT_HANDLE);
pos.X = 5, pos.Y = 5; // 將位置設在 (5,5) 之地方。
SetConsoleCursorposition(hin, pos);
if(!WriteConsole(hin, buffer, sizeof(buffer), &WriteWord, NULL)){
// fail.
printf("WriteConsole Error!!");
}
getchar();
return 0;
}
執行結果