用C語言寫的應用一般都需要一個人機交互界面來實現用戶對應用的操作,爲了用戶體驗,這時候我們就需要設計一個友好的人機交互界面。而C語言怎麼實現這個呢,這裏就用到了windows.h,通過windows.h實現將光標移動到窗口的特定位置打印出字符,從而形成一個看上去還不錯的UI。
具體代碼如下:
#include "stdafx.h"
#include<stdio.h>
#include<windows.h>
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //定義了一個句柄變量handle,將其賦值爲GetStdHandle((STD_OUTPUT_HANDLE)),即標準輸出的句柄
void gotoxy(short x, short y) {
COORD coord = { x,y };/*定義結構體變量coord*/
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
/*SetConsoleCursorPosition函數,如果用戶定義了結構體變量pos,其中X和Y是它的成員,通過修改pos.X和pos.Y的值就可以實現光標的位置控制*/
}
int main()
{
int x, y;
while (1) {
scanf_s("%d%d", &x, &y);
gotoxy(x, y);
}
return 0;
}
通過上述代碼就能夠實現光標的任意移動問題
那麼如何做出一個簡單的UI呢,下面有這樣一個例子。
#include "stdafx.h"
#include<stdio.h>
#include<windows.h>
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
void gotoxy(short x, short y) {
COORD coord = { x,y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
/*出於美觀考慮,通過下面的HideCursor函數隱藏閃爍的光標*/
void HideCursor() {
CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
int main()
{
int x, y;
while (1) {
HideCursor();
for (x = 0; x <= 40; x++) {
for (y = 0; y <= 20; y++) {
if (x == 0 || x == 40 || y == 0 || y == 20) {
gotoxy(x, y);
printf("*");
}
else {
if (x == 15 && y == 10){
gotoxy(x, y);
printf("1:New Game");
y += 1;
gotoxy(x, y);
printf("2:Load Game");
y += 1;
gotoxy(x,y);
printf("3:Playback");
}
else {
continue;
}
}
}
}
}
return 0;
}