ncurses視窗機制:wprintw(), wrefresh()

Koma_Wong發表於2018-06-20
  • Copyright(C) NCURSES Programming HOWTO

視窗機制簡介

在我們面對數以萬計的curses 函式之前,讓我們先了解一下視窗機制。關於視窗機制的詳細內容我們會在以後的章節中詳細介紹,本章只介紹視窗的基本概念。 視窗是由curses系統定義的一個假想的螢幕,並不像Windows 平臺上的視窗那樣具有邊框。當curses 初始化的時候,它會預設建立一個叫做stdscr 的視窗。這個視窗的螢幕一般是80列,25 行(根據顯示環境的不同,可能會出現不同的大小)。如果只是執行簡單的任務,比如列印幾個字串、輸入一些資料等等,這樣的單視窗程式完全可以滿足你的需要。當然,你也可以通過視窗系統的函式建立你自己的視窗。 舉個例子,如果你呼叫以下函式:

printw(“Hi! There!”);
refresh();

它會在stdscr 視窗上的當前游標位置輸出“Hi! There!”。同樣,呼叫refresh()函式,只更新stdscr 上的輸出內容。 例如,你已經建立了一個叫做win 的視窗並要輸出以上內容,只需在以上的輸出函式前新增w 字首就可以了。當然,函式中的引數也要做出相應的變化(要指明你所要顯示資訊的視窗):

wprintw(win, "Hi There !!!");
wrefresh(win);

你將在這份文件的其餘部分看到這些函式有相同的命名規則。每個相關函式都對應有三個甚至更多的處理函式。

printw(string); /* 在stdscr 的當前游標位置列印字串string */
mvprintw(y, x, string); /* 將字串string 列印在座標(y,x)處*/
wprintw(win, string); /* 在視窗win 的當前游標位置列印字串string */
mvwprintw(win, y, x, string);
/* 將游標移動到視窗win 的(y,x)座標處然後列印字串string */

由此可以看出,沒有w 字首的函式在呼叫時被擴充套件成以stdscr 作為當前視窗的函式。

相關文章