ncurses其他特性:curs_set(),離開curses模式,ACS_擴充套件字符集,擴充套件庫
- Copyright(C) NCURSES Programming HOWTO
其它特色
現在你所掌握的函式可以寫出一個非常不錯的curses 程式了。這裡還有一些很有趣的函式可以為你的程式增色。
curs_set()
函式
這個函式用來設制游標是否可見。它的引數可以是:0
(不可見),1
(可見),2
(完全可見)
臨時離開Curses 模式
有時候你也許會想暫時離開curses 模式,回到行緩衝模式下做些其它的事。在這種情況下,你首先要呼叫def_prog_mode()
函式儲存tty
模式下的資訊,然後使用end_win()
函式退出curses
模式,讓你回到最初的tty
模式。如果你結束了tty
模式下的工作,想要返回curses模式,就需要呼叫reset_prog_mode()
函式,它會將def_prog_mode()
函式儲存的資訊重新讀入到虛擬的螢幕上。之後必須通過refresh()
函式重新整理螢幕,才可以返回到原先儲存的curses 模式。讓我們通過一個小例子瞭解一下這些函式的用法:
例:臨時離開模式
/*
Compile: gcc main.c -lncurses
*/
#include <ncurses.h>
int main()
{
initscr(); /* 啟動CURSES 模式*/
printw("Hello World !!!\n"); /* 列印Hello World!!! */
refresh(); /* 讓虛擬顯示器的內容顯示到螢幕上*/
def_prog_mode(); /* 儲存當前tty 模式*/
endwin(); /* 臨時退出CURSES 模式*/
system("sh"); /* 返回普通的行緩衝模式*/
reset_prog_mode(); /* 返回到def_prog_mode()儲存的tty 模式*/
refresh(); /* 使用refresh() 函式恢復螢幕的內容*/
printw("Another String\n"); /* 完全返回CURSES 模式*/
refresh(); /* 別忘了重新整理螢幕*/
endwin(); /* 退出CURSES 模式*/
return 0;
}
ACS_
常量
如果你曾經在DOS
下編寫過程式,就應該知道擴充套件字符集
。但是這些字符集中的字元只能在少數的終端上顯示。例如NCURSES 的box()
函式(譯者注:這個函式用來繪製一個矩形框)就使用了這些擴充套件字元。所有這些字元都是以ACS_
作為字首的常量,所謂ACS
,就是Alternative Character Set(可選字符集)
的縮寫。你可以注意到在以前的程式中多多少少都用到了這些有意思的字元。下面這個程式分別介紹這些字元:
例:ACS
常量介紹例子
/*
Compile: gcc main.c -lncurses
*/
#include <ncurses.h>
int main()
{
initscr();
printw("Upper left corner "); addch(ACS_ULCORNER); printw("\n");
printw("Lower left corner "); addch(ACS_LLCORNER); printw("\n");
printw("Lower right corner "); addch(ACS_LRCORNER); printw("\n");
printw("Tee pointing right "); addch(ACS_LTEE); printw("\n");
printw("Tee pointing left "); addch(ACS_RTEE); printw("\n");
printw("Tee pointing up "); addch(ACS_BTEE); printw("\n");
printw("Tee pointing down "); addch(ACS_TTEE); printw("\n");
printw("Horizontal line "); addch(ACS_HLINE); printw("\n");
printw("Vertical line "); addch(ACS_VLINE); printw("\n");
printw("Large Plus or cross over "); addch(ACS_PLUS); printw("\n");
printw("Scan Line 1 "); addch(ACS_S1); printw("\n");
printw("Scan Line 3 "); addch(ACS_S3); printw("\n");
printw("Scan Line 7 "); addch(ACS_S7); printw("\n");
printw("Scan Line 9 "); addch(ACS_S9); printw("\n");
printw("Diamond "); addch(ACS_DIAMOND); printw("\n");
printw("Checker board (stipple) "); addch(ACS_CKBOARD); printw("\n");
printw("Degree Symbol "); addch(ACS_DEGREE); printw("\n");
printw("Plus/Minus Symbol "); addch(ACS_PLMINUS); printw("\n");
printw("Bullet "); addch(ACS_BULLET); printw("\n");
printw("Arrow Pointing Left "); addch(ACS_LARROW); printw("\n");
printw("Arrow Pointing Right "); addch(ACS_RARROW); printw("\n");
printw("Arrow Pointing Down "); addch(ACS_DARROW); printw("\n");
printw("Arrow Pointing Up "); addch(ACS_UARROW); printw("\n");
printw("Board of squares "); addch(ACS_BOARD); printw("\n");
printw("LanternSymbol "); addch(ACS_LANTERN); printw("\n");
printw("Solid Square Block "); addch(ACS_BLOCK); printw("\n");
printw("Less/Equal sign "); addch(ACS_LEQUAL); printw("\n");
printw("Greater/Equalsign "); addch(ACS_GEQUAL); printw("\n");
printw("Pi "); addch(ACS_PI); printw("\n");
printw("Not equal "); addch(ACS_NEQUAL); printw("\n");
printw("UK pound sign "); addch(ACS_STERLING); printw("\n");
refresh();
getch();
endwin();
return 0;
}
擴充套件庫
curses 函式除了主函式庫外,還有一些具有很多新功能和特性的字元文字模式的擴充套件庫。以下章節將分別介紹與curses 一起釋出的三個擴充套件庫(panel
(皮膚擴充套件庫)、menu
(選單擴充套件庫)、form
(表單擴充套件庫))。
相關文章
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- 開發php擴充套件PHP套件
- Java 缺失的特性:擴充套件方法Java套件
- C 擴充套件庫 – mysql API套件MySqlAPI
- DLR 的擴充套件庫 Dynamitey套件MIT
- Chrome瀏覽器擴充套件開發系列之十九:擴充套件開發示例Chrome瀏覽器套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- 那些離不開的 Chrome 擴充套件外掛Chrome套件
- chrome擴充套件程式開發Chrome套件
- Go開發PHP擴充套件GoPHP套件
- php開啟curl擴充套件PHP套件
- php擴充套件開發初探PHP套件
- LLM 擴充套件開發工具套件
- .Net3.5新特性-擴充套件方法套件
- 分類擴充套件套件
- 擴充套件表示式套件
- 新增php擴充套件PHP套件
- swift擴充套件ExtensionsSwift套件
- iOS 通知擴充套件iOS套件
- 可擴充套件性套件