📄 dismgr.c
字号:
#include <ncurses.h>
#include "kapp.h"
#define BV '.'
WINDOW * recvMsgListWin,* sendMsgWin,* sysMsgWin;
char blank[256]="";
attr_t sattr;
short cPair=0;
void *p=0;
void BackToInput()
{
int x,y;
getbegyx(sendMsgWin,y,x);
move(y + 1,x + 1);
wrefresh(sendMsgWin);
}
void AppInit()
{
int i;
initscr();
raw();
keypad(stdscr,TRUE);
noecho();
recvMsgListWin = newwin(LINES - 8,COLS,0,0);
sendMsgWin = newwin(5,COLS,LINES - 8,0);
sysMsgWin = newwin(3,COLS,LINES - 3,0);
wborder(recvMsgListWin,BV,BV,BV,BV,BV,BV,BV,BV);
wborder(sendMsgWin,BV,BV,BV,BV,BV,BV,BV,BV);
wborder(sysMsgWin,BV,BV,BV,BV,BV,BV,BV,BV);
wrefresh(recvMsgListWin);
wrefresh(sendMsgWin);
wrefresh(sysMsgWin);
start_color();
init_pair(1,COLOR_BLUE,COLOR_WHITE);
wattr_get(recvMsgListWin,&sattr,&cPair,NULL);
for(i=0;i < (COLS - 2);i++) blank[i]=' ';
}
void KExit(char * arg_msg)
{
ShowTips(arg_msg);
AppClean();
exit(1);
}
void AppClean()
{
endwin();
}
void ShowRcvMsg(char * arg_msg)
{
static int NextLine = 1;
static int CurrLine = 0;
static int LastMsgLen = 0;
static char buf[128]="";
if(CurrLine != 0)
{
mvwprintw(recvMsgListWin,CurrLine,1,buf);
mvwchgat(recvMsgListWin,CurrLine,1,LastMsgLen,sattr,cPair,NULL);
}
sprintf(buf,"%s",arg_msg);
mvwprintw(recvMsgListWin,NextLine,1,blank);
mvwprintw(recvMsgListWin,NextLine,1,arg_msg);
LastMsgLen = strlen(arg_msg);
mvwchgat(recvMsgListWin,NextLine,1,LastMsgLen,A_BLINK|A_STANDOUT|A_BOLD,1,NULL);
wrefresh(recvMsgListWin);
CurrLine = NextLine;
NextLine ++;
if(NextLine > (getmaxy(recvMsgListWin) - 2)) NextLine = 1;
BackToInput();
}
void GetSendingMsg(char * arg_msg)
{
mvwprintw(sendMsgWin,1,1,blank);
echo();
mvwgetnstr(sendMsgWin,1,1,arg_msg,COLS - 2);
wrefresh(sendMsgWin);
noecho();
}
void ShowTips(char * arg_msg)
{
mvwprintw(sysMsgWin,1,1,blank);
mvwprintw(sysMsgWin,1,1,arg_msg);
wrefresh(sysMsgWin);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -