效果圖同上篇 《控制台繪製登陸框(二)>>一致。
#include #include #include #include #define key_tab 9
#define background_black 0
#define background_white 255
using namespace std;
typedef struct myinputmyinput;
typedef struct mybuttonmybutton;
/**function: 將字元輸出到緩衝區
@param
ch: 要輸入的字元
posline : 字元所在行的位置
poscolumn: 字元所在列的位置
charinfoaarray:緩衝區陣列的內容
**/void writechartobuffer(char_info ch, int posline, int poscolumn, char_info * charinfoaarray)
/***
function:將緩衝區的字元輸出到控制台
@param
startposrow:顯示區域起始點的行號
startposcolumn:顯示區域起始點的列號
height:顯示區域高
width:顯示區域寬
charinfoaarray:緩衝區陣列的內容
***/
void outputtoconsole(int startposrow, int startposcolumn, int height, int width, char_info * charinfoaarray)
;//固定值(控制台視窗固定的屬性值)
coord dwbuffercoord = ;//緩衝區左上角的起始位置
small_rect rect = ;//顯示多大的緩衝區:
writeconsoleoutput(hconsoleoutput, charinfoaarray, dwbuffersize, dwbuffercoord, &rect);
}/**
function :在控制台輸出文字
@param
text:要輸出的文字
row:輸出文字的行數
column:輸出文字的列數
startposrow: 第乙個字元所在行數
startposcolumn: 第乙個字元所在列數
bgcolor: 背景色
fgcolor;前景色
**/void drawtext(string text, int row, int column, int startposrow, int startposcolumn, int bgcolor, int fgcolor)
outputtoconsole(startposrow, startposcolumn, row, column, charinfoarray);
}/**
function 畫矩形
@param
height:矩形的高
width:矩形的寬
startposrow:矩形左上角縱座標的位置
startposcolumn:矩形左上角橫座標的位置
bgcolor:背景色
fgcolor:前景色
**/void drawrect(int height, int width, int leftposy, int leftposx, int bgcolor, int fgcolor)
}outputtoconsole(leftposy, leftposx, height, width, charinfoaarray);
}/**
隱藏游標
**/void hidecursor()
/**顯示游標
**/void showcursor()
void main()
;//游標所在的位置
int key = 0;//接收鍵盤輸入
int i = 1;
myinput inputusername;
myinput inputpassword;
mybutton btnlogin;
drawtext(strusername, 1, 8, 9, 25, foreground_red, background_black);//在指定位置輸入username字串
drawtext(strpassword, 1, 8, 11, 25, foreground_red, background_black);//在指定位置輸入password字串
inputusername.height = 1;
inputusername.width = 20;
inputusername.bgcolor = background_white;
inputusername.fgcolor = foreground_red;
inputusername.startposx = 35;
inputusername.startposy = 9;
drawrect(inputusername.height, inputusername.width, inputusername.startposy, inputusername.startposx, inputusername.bgcolor, inputusername.fgcolor);
inputpassword.height = 1;
inputpassword.width = 20;
inputpassword.bgcolor = background_white;
inputpassword.fgcolor = foreground_red;
inputpassword.startposx = 35;
inputpassword.startposy = 11;
drawrect(inputpassword.height, inputpassword.width, inputpassword.startposy, inputpassword.startposx, inputpassword.bgcolor, inputpassword.fgcolor);
btnlogin.str = "login";
btnlogin.bgcolor = background_green;
btnlogin.fgcolor = foreground_red;
btnlogin.height = 3;
btnlogin.width = 10;
btnlogin.startposx = 35;
btnlogin.startposy = 14;
drawrect(btnlogin.height, btnlogin.width, btnlogin.startposy, btnlogin.startposx, btnlogin.bgcolor, btnlogin.fgcolor);
drawtext(btnlogin.str, btnlogin.height / 2, btnlogin.str.length(), btnlogin.startposy + (btnlogin.height / 2), btnlogin.startposx + (btnlogin.width - btnlogin.str.length()) / 2, btnlogin.bgcolor, btnlogin.fgcolor);//在指定位置輸入login字串
cursorpos = ;
setconsolecursorposition(getstdhandle(std_output_handle), cursorpos);
while (1)
;setconsolecursorposition(getstdhandle(std_output_handle), cursorpos);
}else if (i % 3 == 2)//餘數為2時,切換到密碼輸入框
;setconsolecursorposition(getstdhandle(std_output_handle), cursorpos);
}else if (i % 3 == 0)//餘數為0時,切換到登陸按鈕
;setconsolecursorposition(getstdhandle(std_output_handle), cursorpos);
hidecursor();
//繪製button按鈕,改變顏色
btnlogin.bgcolor = background_blue;
drawrect(btnlogin.height, btnlogin.width, btnlogin.startposy, btnlogin.startposx, btnlogin.bgcolor, btnlogin.fgcolor);
drawtext(btnlogin.str, btnlogin.height / 2, btnlogin.str.length(), btnlogin.startposy + (btnlogin.height / 2), btnlogin.startposx + (btnlogin.width - btnlogin.str.length()) / 2, btnlogin.bgcolor, btnlogin.fgcolor);//在指定位置輸入login字串
}break;
default:
break;}}
getchar();
}
用求餘的演算法進行tab切換
控制台繪製登陸框 二 TAB切換
function 將字元輸出到緩衝區 param ch 要輸入的字元 posline 字元所在行的位置 poscolumn 字元所在列的位置 charinfoaarray 緩衝區陣列的內容 void writechartobuffer char info ch,int posline,int pos...
kvm 控制台登陸配置
vm虛擬機器能否像xen虛擬機器一樣通過virsh console 一樣採用字元介面進行linux虛擬機器控制台呢,答案是肯定的,預設情況下該命令是不起作用的,需要修改相關檔案才能實現。1 新增ttys0的許可,允許root登入 vm虛擬機器能否像xen虛擬機器一樣通過virsh console 一...
虛擬控制台的切換過程
1.虛擬終端的切換在控制台軟中斷中執行,當按 alt f1 時,鍵盤中斷設定變數want console為0,然後激發控制台軟中斷 console softint 如果請求的控制台存在並且不等於當前控制台,這時呼叫change console want console 切換控制台。2.當前控制台就是...