📄 msgdialog.c
字号:
#include "msgdialog.h"MsgDialog::MsgDialog(){ fld[0]=NULL; fld[1]=NULL; frm=NULL; msg=NULL;// msg=(char *)malloc(sizeof(char)*MAXMSGLEN);// if(msg!=NULL)// memset(msg,0,sizeof(char)*MAXMSGLEN);}MsgDialog::~MsgDialog(){ if (msg!=NULL) free(msg); if(frm!=NULL) { unpost_form(frm); free_form(frm); } if(fld[0]!=NULL) free_field(fld[0]);}int MsgDialog::InitMsgDialog(int align,int Height,int Width,int Color,int Shadow,int FontStyle,int WinType,int basedlg,char *Title){ int ret=FALSE; ret=InitDialog(align,Height,Width,Color,Shadow,FontStyle,WinType,basedlg,Title); if (ret==FALSE) goto failure; curs_set(0); wrefresh(basewin); vscroll.InitVScroll(y+1,x+width-2,height-2,1,COLOR_BLUE_YELLOW,A_BOLD,VSCROLL_BORDER); vscroll.ChangePos(); failure: return ret;} int MsgDialog::InitMsgDialog(int Height,int Width,int Color,int Shadow,int FontStyle,int WinType,int basedlg,char *Title){ int ret=FALSE; ret=InitDialog(Height,Width,Color,Shadow,FontStyle,WinType,basedlg,Title); if (ret==FALSE) goto failure; curs_set(0); wrefresh(basewin); vscroll.InitVScroll(y+1,x+width-2,height-2,1,COLOR_BLUE_YELLOW,A_BOLD,VSCROLL_BORDER); vscroll.ChangePos(); failure: return ret;}int MsgDialog::MsgDialogDriver(){ return DialogDriver();}int MsgDialog::MsgDialogDriver(int type){ int ret=0; int ch; int exist=FALSE; form_driver(frm,REQ_FIRST_FIELD); curs_set(1); while(!exist && (ch = wgetch(basewin))) { switch(ch) { case KEY_UP: form_driver(frm,REQ_PREV_LINE); break; case KEY_DOWN: form_driver(frm,REQ_NEXT_LINE); break; case KEY_NPAGE: form_driver(frm,REQ_SCR_BPAGE); break; case KEY_PPAGE: form_driver(frm,REQ_SCR_FPAGE); break; case 0xA: exist=TRUE; } } curs_set(0); return ret;}void MsgDialog::DrawMsgDialog(char *Msg){ int rows,cols,len; if (msg!=NULL) free(msg); len=strlen(Msg); msg=(char *)malloc(sizeof(char)*len); if(msg!=NULL) strcpy(msg,Msg); fld[0] = new_field(height-2,width-3, 0, 0, 0, 0); fld[1] = NULL; set_field_back(fld[0], COLOR_PAIR(COLOR_WHITE_BLACK)); field_opts_on(fld[0], O_ACTIVE); field_opts_off(fld[0], O_WRAP); field_opts_off(fld[0], O_AUTOSKIP); field_opts_on(fld[0], O_STATIC); // set_field_buffer(fld[0], 0, msg); frm = new_form(fld); set_current_field(frm, fld[0]); keypad(basewin,TRUE); scale_form(frm,&rows,&cols); set_form_win(frm, basewin); set_form_sub(frm, derwin(basewin,height-2,width-3,1,1)); post_form(frm);}void MsgDialog::SetMsgTxt(char *txt){ int i=0; int len=strlen(txt); for(i=0;i<len;i++) { if(isprint(txt[i])) form_driver(frm,txt[i]); else form_driver(frm,REQ_NEW_LINE); }}int ErrMsg(int mode,char *txt){ MsgDialog msgdlg; msgdlg.InitMsgDialog(6,40,COLOR_BLACK_CYAN,0,A_BOLD,DIALOG_ERRORMESSAGE,mode,"[Error]"); msgdlg.SetModule(TRUE); msgdlg.DrawMsgDialog(""); msgdlg.SetMsgTxt(txt); return msgdlg.MsgDialogDriver();}int MakeMsg(int mode,char *txt){ MsgDialog msgdlg; msgdlg.InitMsgDialog(1,(int)(LINES/3),COLS-6,COLOR_BLACK_CYAN,0,A_BOLD,DIALOG_ERRORMESSAGE,mode,"[Make]"); msgdlg.SetModule(TRUE); msgdlg.DrawMsgDialog(""); msgdlg.SetMsgTxt(txt); return msgdlg.MsgDialogDriver(mode);}//end of msgdialog.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -