ncurses 새로운 윈도우 만들기
오늘은 ncurses로 새로운 윈도우를 생성하고 생성한 윈도우를 꾸미고 윈도우를 소멸시키는 방식에 대하여 포스팅해보려 합니다.
WINDOW*
특정 윈도우를 가리키는 포인터 데이터 타입입니다.
stdscr는 기본 윈도우의 포인터입니다.
newwin()
새로운 윈도우를 생성하는 함수입니다.
새 윈도우 사이즈와 위치를 인자로 넣어주어야 하며, 생성시 메모리가 할당됩니다.
인자는 차래대로 행 크기, 열 크기, 시작 x좌표, 시작 y좌표 순서로 넣습니다.
win1 = newwin(10, 10, 1, 1);
10*10 크기의 윈도우가 1,1 좌표에서 출력됩니다.
wbkgd()
한 속성으로 특정 윈도우에게 적용하게 하는 함수입니다.
윈도우 객체와 COLOR_PAIR()쌍이 인자로 들어가게 됩니다.
wattron()
특정 윈도우에 적용할 속성을 적용하게 하는 함수힙니다.
이 역시 윈도우 객체와 COLOR_PAIR()쌍이 인자로 들어가게 됩니다.
mvwprintw()
특정 윈도우의 특정 위치에서부터 문자열을 출력합니다.
저번 포스팅에서 언급한대로 화면을 새로고치기전에는 화면에 나오지는 않습니다.
wborder()
특정 윈도우의 경계를 설정해주는 함수로서 box()와 유사하게 작동합니다.
다만 이 함수는 왼쪽, 오른쪽, 위쪽, 아래쪽 모양을 인자로 주어 다양하게 꾸밀 수 있습니다.
wborder(window, '*','*','*','*','*','*','*','*');
wrefresh()
특정 윈도우를 새로고치는 함수입니다.
인자로는 새로고칠 화면의 윈도우 객체를 넣어줍니다.
delwin()
윈도우가 필요없어졌을 떄에 할당된 메모리를 해제합니다.
인자로 삭제할 윈도우 객체를 넣습니다.
예제
#include <ncurses.h>
int main()
{
WINDOW *win;
initscr();
start_color();
init_pair(1, COLOR_WHITE, COLOR_BLACK);
refresh();
win = newwin(10, 10, 1, 1);
wbkgd(win, COLOR_PAIR(1));
wattron(win, COLOR_PAIR(1));
mvwprintw(win, 1, 1, "A new window");
wborder(win, '*','*','*','*','*','*','*','*');
wrefresh(win);
getch();
delwin(win);
endwin();
}
ret
Written on May 19, 2018