前言

最近几天闲的没事,写了一个可以用来写简单的app程序的头文件,分享给大家!

头文库

#ifndef CAPP_H
#define CAPP_H #include<bits/stdc++.h>
#include<conio.h>
#include<windows.h> using namespace std;
class AppClass{
public:
AppClass(string colorStyle,int lengrth,int width,string title);
void gotoxy(int x,int y);
void box(string title,string words,UINT windows);
void sleep(double second);
void pos(int x,int y);
void cls(void);
void pause(void);
protected:
}; AppClass::AppClass(string colorStyle="f0",
/*由两个十六进制数组成
第一个对应于背景 第二个对应于前景
每个数字可以为以下任何值
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
*/
int length=45,//长度
int width=30,//宽度
string title="cAPP应用程序"//标题
)
{
string cmdColor="color "+colorStyle;
string cmdTitle="title "+title;
char cmdWindow[210];
sprintf(cmdWindow,"mode con cols=%d lines=%d",length,width);
system(cmdColor.c_str());
system(cmdWindow);
system(cmdTitle.c_str());
}
void AppClass::gotoxy(int x,int y){
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获取标注输出句柄
COORD pos;
pos.X = x;pos.Y = y;
SetConsoleCursorPosition(hOut, pos);//偏移光标位置
}
void AppClass::box(string title="无标题",string words=" ",UINT windows=MB_OK){
MessageBox(NULL,TEXT(words.c_str()),TEXT(title.c_str()),windows);
}
void AppClass::sleep(double second=1){
Sleep(second*1000);
}
void AppClass::pos(int x,int y){
SetCursorPos(x,y);
}
void AppClass::cls(void){system("cls");}
void AppClass::pause(void){system("pause");}
class AppTime: public AppClass{
public:
void putAllTime(void);
void putDate(void);
void putTime(void);
protected:
time_t nowtime;
};
void AppTime::putAllTime(void){
time(&nowtime); //获取1900年1月1日0点0分0秒到现在经过的秒数
tm*p=localtime(&nowtime); //将秒数转换为本地时间,年从1900算起,需要+1900,月为0-11,所以要+1
printf("%04d:%02d:%02d %02d:%02d:%02d\n",
p->tm_year + 1900, //年
p->tm_mon + 1,//月
p->tm_mday,//日
p->tm_hour,//时
p->tm_min,//分
p->tm_sec//秒
);
}
void AppTime::putDate(void){
time(&nowtime); //获取1900年1月1日0点0分0秒到现在经过的秒数
tm*p=localtime(&nowtime); //将秒数转换为本地时间,年从1900算起,需要+1900,月为0-11,所以要+1
printf("%04d:%02d:%02d\n",
p->tm_year + 1900, //年
p->tm_mon + 1,//月
p->tm_mday//日
);
}
void AppTime::putTime(void){
time(&nowtime); //获取1900年1月1日0点0分0秒到现在经过的秒数
tm*p=localtime(&nowtime); //将秒数转换为本地时间,年从1900算起,需要+1900,月为0-11,所以要+1
printf("%02d:%02d\n",
p->tm_hour,//时
p->tm_min//分
);
} class color:public AppClass{
public:
void setTextColor(string color);
void setTextBackgroundColor(string color);
void setAllColor(string mb);
void setAllColor(int mb);
void textColorClean(void);
}; void color::setTextColor(string color="white"){
//设置Windows控制台打印颜色
int num = 4;
if (color == "littlewhite") num=0;
else if (color == "red") num=1;
else if (color == "green") num=2;
else if (color == "blue") num=3;
else if (color == "white") num=4;
else if (color == "skyblue") num=5;
else if (color == "yellow") num=6;
else if (color == "pink") num=7;
else if (color == "lightred") num=11;
else if (color == "lightgreen") num=12;
else if (color == "lightblue") num=13;
else if (color == "lightwhite") num=14;
else if (color == "lightskyblue") num=15;
else if (color == "lightyellow") num=16;
else if (color == "lightpink") num=17;
else num=4; switch (num){
case 0://浅白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
break;
case 1://红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
break;
case 2://绿色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
break;
case 3://蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
break;
case 4://白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
break;
case 5://天蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN);
break;
case 6://黄色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED);
break;
case 7://粉色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_RED);
break;
case 11://增强红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
break;
case 12://增强绿色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
break;
case 13://增强蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
break;
case 14://增强白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
break;
case 15://增强天蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN);
break;
case 16://增强黄色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED);
break;
case 17://增强粉色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED);
break;
default://默认
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
break;
}
} /*
设置字体背景色:
方法支持15种颜色(请传入相应的英文参数):
0、浅白色:littlewhite
1、红色:red 2、绿色:green 3、蓝色:blue
4、白色: white 5、天蓝色:skyblue 6、黄色:yellow
7、粉色: pink
11、亮红色:lightred 12、亮绿色:lightgreen 13、亮蓝色:lightblue
14、亮白色: lightwhite 15、亮天蓝色:lightskyblue 16、亮黄色:lightyellow
17、亮粉色: lightpink
注意:背景色一旦设置,就恢复不了原来的黑色字体背景了,除非不设置背景色
*/
void color::setTextBackgroundColor(string color="white"){
//设置Windows控制台打印颜色
int num = 4;
if (color == "littlewhite") num=0;
else if (color == "red") num=1;
else if (color == "green") num=2;
else if (color == "blue") num=3;
else if (color == "white") num=4;
else if (color == "skyblue") num=5;
else if (color == "yellow") num=6;
else if (color == "pink") num=7;
else if (color == "lightred") num=11;
else if (color == "lightgreen") num=12;
else if (color == "lightblue") num=13;
else if (color == "lightwhite") num=14;
else if (color == "lightskyblue") num=15;
else if (color == "lightyellow") num=16;
else if (color == "lightpink") num=17;
else num=4;
switch (num){
case 0://浅白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY);
break;
case 1://红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);
break;
case 2://绿色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN);
break;
case 3://蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE);
break;
case 4://白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED);
break;
case 5://天蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_GREEN);
break;
case 6://黄色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | BACKGROUND_RED);
break;
case 7://粉色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_RED);
break;
case 11://增强红色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_RED);
break;
case 12://增强绿色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_GREEN);
break;
case 13://增强蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_BLUE);
break;
case 14://增强白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED);
break;
case 15://增强天蓝色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_GREEN);
break;
case 16://增强黄色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_RED);
break;
case 17://增强粉色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_RED);
break;
default://默认
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED);
break;
}
}
void color::setAllColor(int mb=1){
switch(mb){
case 1:{
system("color f0");
break;
}
case 2:{
system("color 0f");
break;
}
case 3:{
system("color e0");
break;
}
}
}
void color::setAllColor(string mb){
char text=mb[0],backGround=mb[1];
string cmd="color "+text+backGround;
system(cmd.c_str());
}
void color::textColorClean(void){
setTextBackgroundColor();
setTextColor();
}
class timer:public AppClass{
public:
timer(void){
bclock=clock();
}
double stop(void){
return (clock()-bclock)/CLOCKS_PER_SEC;
}
private:
clock_t bclock;
};
#endif

后记

这就是cAPP.h的全部内容了,把它粘贴到自己的编辑器上,再保存到你的c++系统文件夹里,然后就可以尽情地使用它了!

cAPP.h头文件的更多相关文章

  1. 【C】.h头文件的重复包含问题

    .h头文件存在的意义就是封装,可以方便多个.c源文件使用,但要防止.h头文件被同一个.c源文件多次包含. 例如, io.h文件 #ifndef _IO_H_ #define _IO_H_ #defin ...

  2. 【转】【Raspberry Pi】Unix NetWork Programming:配置unp.h头文件环境

    一.初衷 近期正在做网络计算编程的作业.要求平台为unix/linux,想着Raspberry Pi装的Debian系统也是Linux改的,也应该能够勉强用着,所以就用它来做作业了! 二.说明 先把环 ...

  3. Android JNI开发生成.h头文件问题(转)

    在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...

  4. 基础知识复习(二)——stdafx.h 头文件及x&(x-1)运算

    今天好久没写过C++程序了,使用VS2013 新建空的控制台程序,结果自动生成了头文件和main 方法. 就了解了stdafx.h头文件的含义及用法. stdafx:standard Applicat ...

  5. hpp头文件与h头文件的区别

    hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译.而实现代码将直接 ...

  6. Android JNI开发生成.h头文件问题

    在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...

  7. C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  8. 找不到所需要的ndbm.h头文件

    具体描述: 通过deb包安装gdbm之后,发现找不到所需要的ndbm.h头文件.但是你会发现一个叫gdbm-ndbm.h的文件,你只需要把文件名改成ndbm.h就可以了,当然需要一定权限. sudo ...

  9. stdlib.h 头文件

    stdlib 头文件即standard library标准库头文件.stdlib.h里面定义了五种类型.一些宏和通用工具函数. 类型例如size_t.wchar_t.div_t.ldiv_t和lldi ...

  10. .h头文件和.c文件的作用和区别

    .h头文件和.c文件的作用和区别 在小工程中,.h的作用没有得到充分的使用,在大工程中才能充分体现出.h文件的作用. .h和.c文件都是代码.头文件好处有: 一:头文件便于共享,只需要添加一句“inc ...

随机推荐

  1. Error in v-on handler: “TypeError: Cannot read properties of undefined (reading ‘resetFields‘)“

    在做vue element 项目中,做了一个新增 打开弹框的功能,想每次点击新增的时候表单项重置.1.使用了this.$refs[formName].resetFields();2.但是报错了,原因是 ...

  2. Word 设置脚注和尾注

    描述 脚注一般位于页面的底部,作为文档某处内容的注释.尾注一般位于文档的末尾,列出引文的出处等. 设置脚注和尾注 将光标移动到要插入脚注或尾注的地方,然后点击"引用"选项卡. 左边 ...

  3. PostgreSQL Repmgr集群

    一.概述 repmgr是一套开源工具,用于管理PostgreSQL服务器群集内的复制和故障转移.它支持并增强了PostgreSQL的内置流复制,该复制流提供了一个读/写主服务器以及一个或多个只读备用数 ...

  4. layui级联操作

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link re ...

  5. vue3中对于/deep/和::v-deep的警告信息处理

    目前发现两处警告信息: ::v-deep usage as a combinator has been deprecated. Use :deep() instead. the >>> ...

  6. Spanve:一种检测大规模空间转录组学数据中空间变异基因的有效统计方法

    文章题目 Spanve: an Effective Statistical Method to Detect Spatially Variable Genes in Large-scale Spati ...

  7. windows自带xbox game bar如何更改录制视频保存位置

      若要更改保存游戏剪辑的位置,请使用文件资源管理器根据需要将"捕获"文件夹移动到电脑上的任意位置. Windows 会将游戏剪辑和屏幕截图保存在该文件夹中(无论移动到哪里).   ...

  8. pnpm 中无法使用 patch-package 打补丁

    原文:https://lwebapp.com/zh/post/pnpm-patch-package 介绍 前端开发过程中,经常会遇到第三方开源库有 BUG 的情况,通常我们有以下处理方式 自己 for ...

  9. python中的上下文管理器以及python内建模块contextlib的contextmanager方法

    上下文管理器 上下文管理器是实现了上下文管理协议的对象,其特有的语法是"with -as".主要用于保存和恢复各种全局状态,关闭文件等,并为try-except-finally提供 ...

  10. Gitlab CICD

    简介 最近公司要求要通过Gitlab CICD做一个项目的自动打包,我之前也没接触过,所以只能现学现卖.不过说实话,让我这个连大学英语四级都没过的人看Gitlab官网的纯英文教程,我真的是脑阔昏,于是 ...