- 论坛徽章:
- 0
|
这是一个介绍移动窗口的程序,可以按照程序的介绍进行编译,调制。
#include <curses.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
WINDOW *box_win, *box_clear;
int startx, starty, width, height;
int ch;
initscr(); /* 初始化并进入curses模式 */
cbreak(); /* 行缓冲禁止,传递所有控制信息 */
keypad(stdscr, TRUE); /* 程序需要使用F1功能键 */
height = 6;
width = 16;
starty = (LINES - height) / 2; /*计算窗口中心位置的行数 */
startx = (COLS - width) / 2; /*计算窗口中心位置的列数 */
printw("输入 F1 结束测试程序: ");
box_win = newwin(height, width, starty, startx);
box(box_win, 0, '-');
mvwprintw(box_win, 2, 3, "[ 测试窗口 ]");
mvwprintw(box_win, 3, 2, "===╘☆╘===");
overwrite(box_win, stdscr);
wrefresh(stdscr);
box_clear = newwin(height, width, starty, startx);
wclear(box_clear);
while((ch = getch()) != KEY_F(1))
{
mvwin( box_clear , starty, startx );
overwrite(box_clear, stdscr);
switch(ch) {
case KEY_LEFT:
if( startx > 1 ) mvwin(box_win, starty, --startx);
break;
case KEY_RIGHT:
if( startx + 16 +1 < COLS) mvwin(box_win, starty, ++startx);
break;
case KEY_UP:
if( starty > 1 ) mvwin(box_win, --starty, startx);
break;
case KEY_DOWN:
if( starty + 6 +1 < LINES ) mvwin(box_win, ++starty, startx);
break;
}
overwrite(box_win, stdscr);
touchwin(stdscr);
wrefresh(stdscr);
}
if(box_win) delwin(box_win);
if( box_clear ) delwin(box_clear);
endwin(); /*结束 curses模式 */
return 0;
}
/* cc tt1.c -o tt1 -lcurses 可以完成本程序的编译 */ |
编译后,你可以试着用方向按键,指挥屏幕上的一个测试窗口进行移动操作。 |
|