getyx() 宏:獲取光標位置getyx() 定義於 ncurses.h,用於取得目前光標的座標。注意:不能傳遞指標作為參數,必須傳遞一對整型變數:
int y, x;
getyx(stdscr, y, x); // y=行, x=列
move():移動光標將邏輯光標移動到指定位置:
move(y, x); // 移動到第 y 行、第 x 列
attron() / attroff():文字屬性開啟與關閉呼叫 attron() 啟動文字修飾,遇到註解結束標記 */ 時呼叫 attroff() 停止修飾:
attron(A_REVERSE); // 開啟反白顯示
printw("*********************");
attroff(A_REVERSE); // 關閉反白顯示
| 常數 | 效果 |
|---|---|
A_NORMAL | 普通字元輸出(不加亮) |
A_STANDOUT | 終端最亮顯示 |
A_UNDERLINE | 底線 |
A_REVERSE | 反白顯示 |
A_BLINK | 閃爍顯示 |
A_DIM | 半亮顯示 |
A_BOLD | 加亮加粗 |
A_PROTECT | 保護模式 |
A_INVIS | 空白顯示模式 |
A_ALTCHARSET | 字元交替 |
A_CHARTEXT | 字元遮罩 |
COLOR_PAIR(n) | 前景/背景色配對 |
屬性可組合使用,以 | 運算子串接:attron(A_BOLD | A_BLINK)
#include
#include
int main() {
setlocale(LC_ALL, "");
char mesg[] = "您的名字:";
char name[80];
int y, x;
initscr(); // 初始化
mvprintw(1, 1, "WIN1");
mvprintw(2, 1, "您好");
mvprintw(3, 1, "%s", mesg);
getyx(stdscr, y, x); // 取得目前光標位置
move(y + 2, 2); // 移動光標
attron(A_REVERSE);
printw("*********************");
refresh();
attroff(A_REVERSE);
getyx(stdscr, y, x);
move(y - 1, 1);
scanw("%s", name); // 格式化讀入
mvprintw(6, 1, "%s好,很高興認識您", name);
refresh();
endwin(); // 結束
return 0;
}
gcc -lncursesw 2.c -o mytest
./mytest

關鍵點:支援中文必須連結 ncursesw(寬字元版本)而非 ncurses,並呼叫 setlocale(LC_ALL, "") 設定區域。