关闭

控制台绘制登陆框(一)

129人阅读 评论(0) 收藏 举报
分类:

一效果展示


二代码


#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#define BACKGROUND_BlACK 0
#define BACKGROUND_WHITE 255
using namespace std;
typedef struct myinput{
int height;
int width;
int bgColor;
int fgColor;
int startPosY;
int startPosX;
}MYINPUT;


typedef struct mybutton{
int height;
int width;
int bgColor;
int fgColor;
int startPosY;
int startPosX;
string str;
}MYBUTTON;
/**
function: 将字符输出到缓冲区
@param
ch:        要输入的字符
posLine :   字符所在行的位置
posColumn:  字符所在列的位置
charInfoAarray:缓冲区数组的内容
**/
void WriteCharToBuffer(CHAR_INFO ch, int posLine, int posColumn, CHAR_INFO * charInfoAarray)
{
charInfoAarray[posLine * 80 + posColumn] = ch;
}
/***
function:将缓冲区的字符输出到控制台
@param
startPosRow:显示区域起始点的行号
startPosColumn:显示区域起始点的列号
height:显示区域高
width:显示区域宽
charInfoAarray:缓冲区数组的内容
***/
void OutPutToConsole(int startPosRow, int startPosColumn, int height, int width, CHAR_INFO * charInfoAarray)
{
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwBufferSize = { 80, 25 };//固定值(控制台窗口固定的属性值)
COORD dwBufferCoord = { startPosColumn, startPosRow };//缓冲区左上角的起始位置
SMALL_RECT rect = { startPosColumn, startPosRow, startPosColumn + width - 1, startPosRow + height - 1 };//显示多大的缓冲区:
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)
{
int  i = 0;
CHAR_INFO CharInfo;
CharInfo.Attributes = bgColor | fgColor;
CHAR_INFO  charInfoArray[80 * 25];
for (i = 0; i < text.length(); i++)
{
CharInfo.Char.AsciiChar = text[i];
WriteCharToBuffer(CharInfo, startPosRow, startPosColumn + i, charInfoArray);
}
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)
{
int  i = 0, j = 0;
CHAR_INFO CharInfo;
CharInfo.Attributes = bgColor | fgColor;
CHAR_INFO  charInfoAarray[80 * 25];
for (i = leftPosY; i < leftPosY + height; i++)
{
for (j = leftPosX; j < leftPosX + width; j++)
{
CharInfo.Char.AsciiChar = ' ';
WriteCharToBuffer(CharInfo, i, j, charInfoAarray);
}


}


OutPutToConsole(leftPosY, leftPosX, height, width, charInfoAarray);
}


void main()
{




string strUserName = "USERNAME";
string strPassword = "PASSWORD";
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字符串
getchar();


}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Linux用户登陆与控制台切换

用户登陆 进入Linux系统,必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号: 1.root——超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。 ...
  • foreverhuylee
  • foreverhuylee
  • 2014-11-07 19:38
  • 2350

kvm虚拟化学习笔记(六)之kvm虚拟机控制台登录配置

KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装 http://koumm.b...
  • kepa520
  • kepa520
  • 2015-09-27 18:22
  • 1781

WebLogic:访问管理控制台

1,通过http://localhost:7001/console可以访问控制台,图形化界面。 访问这个控制台,必须先启动管理服务器。 进入到创建的域的目录F:\java\WebLogic\use...
  • xzm_rainbow
  • xzm_rainbow
  • 2013-11-21 14:36
  • 11320

控制台绘制登陆框(三): TAB切换的改进

TAB切换的改进 一 效果展示: 效果图同上篇  >一致。 二代码 #include #include #include #include #define KEY_TAB 9 #defin...
  • nocomment_84
  • nocomment_84
  • 2017-01-05 14:39
  • 86

控制台绘制登陆框(四) 实现简单的字符输入

一功能说明 1 实现用户名输入框,密码输入框可以输入字符,删除字符,通过按下左右键移动光标,输入的字符不能超过20个字符 2 实现简单的登陆验证:当用户将光标切换到login按钮上时,按下回车键可以验...
  • nocomment_84
  • nocomment_84
  • 2017-01-06 17:25
  • 130

控制台绘制登陆框(二):TAB切换

如何在控制台响应键盘事件,实现TAB切换功能? 一:效果展示:当切换到LOGIN按钮时,按钮颜色从绿变蓝,当离开LOGIN按钮时,按钮颜色恢复成绿色。 二代码 #include #i...
  • nocomment_84
  • nocomment_84
  • 2017-01-04 14:00
  • 207

Linux解决无法登陆oracle_weblogic控制台

  • 2012-12-18 18:07
  • 101B
  • 下载

【转】如何登陆Tomcat的控制台(Web管理界面)

http://blog.sina.com.cn/s/blog_61e4a9dd0101j3l9.html 当我们成功安装启动Tomcat服务后,在浏览器输入http://localhost:8080...
  • jiangnankid
  • jiangnankid
  • 2015-06-08 21:56
  • 439

阿里云服务器远程又链接不上 链接一下就闪烁一下又回到登陆界面,控制台重启一下才可以连接

这台服务器远程又链接不上了。 链接一下就闪烁一下又回到登陆界面了。只有控制台重启一下才可以连接。我们购买的所有云服务器过一段时间都是这样子。一点都不稳定售后工程师 :  您好,我们根据您的问 [ 问题...
  • forest_fire
  • forest_fire
  • 2017-03-19 13:22
  • 1646

控制台绘制正弦曲线和余弦曲线同时显示

  • 2015-04-30 12:16
  • 12KB
  • 下载
    个人资料
    • 访问:16088次
    • 积分:525
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:46篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论