码迷,mamicode.com
首页 > 其他好文 > 详细

黑漆漆的控制台也可以炫起来66666

时间:2015-07-21 12:16:29      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

 

一.最简单的方法就是全局控制,觉得有点傻瓜的方法/(ㄒoㄒ)/~~

注意都需要头文件<windows.h>

..............system("color 04");

第一个数字代表背景色,第二个数字代表前景色。各颜色的代码如下:
0=黑色
1=蓝色
2=绿色
3=湖蓝色
4=红色
5=紫色
6=黄色
7=白色
8=灰色
9=淡蓝色
A=淡绿色
B=淡浅绿色
C=淡红色
D=淡紫色
E=淡黄色
F=亮白色
 
二.用句柄控制嗨起来O(∩_∩)O~之SetConsoleTextAttribute函数
看一个C例子:

#include<stdio.h>

#include<windows.h>

int main()

{

  HANDLE consolehwnd;//创建句柄

  consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄

  SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);//设置字体颜色

  printf("hello");

  SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN);

  printf("world!\n");

  getchar();

  SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY|BACKGROUND_BLUE);

  printf("Itisreallybeautiful!\n");

  return 0;

}

 
FOREGROUND_RED表示设置前景色为红色,即字体的颜色为红色;

FOREGROUND_INTENSITY 表示设置前景色为高亮显示,

FOREGROUND_GREEN表示绿色,两个参数中间加“|”表示前景色为高亮绿色;

BACKGROUND_INTENSITY表示设置背景色为高亮显示,

BACKGROUND_BLUE表示背景色为蓝色,

BACKGROUND_INTENSITY | BACKGROUND_BLUE两个参数就使背景色为高亮蓝色。

要表示红色字体,白色背景可以使用SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | FOREGROUND_RED|BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);

设置背景与字体都为高显BACKGROUND_INTENSITY |FOREGROUND_INTENSITY,

设置字体颜色为FOREGROUND_RED,背景颜色为BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE。

其实这里把这些数值加起来就是二进制的,11111100,即十六进制0xFC。

所以设置白体红字字也可以写成: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xFC)。

其他颜色可照此类推: White on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);

 

Red on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);

 

Green on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);

 

Yellow on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN);

 

Blue on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE);

 

Magenta on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_BLUE);

 

Cyan on Black: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);

 

Black on White: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);

 

Red on White: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED);

 

.用句柄控制嗨起来O(∩_∩)O~之改改控制台属性

 //获取控制台窗口信息    GetConsoleScreenBufferInfo();    
//获取控制台窗口标题    GetConsoleTitle();   
//更改指定缓冲区大小    SetConsoleScreenBufferSize();   
//设置控制台窗口标题    SetConsoleTitle();   
//设置控制台窗口信息    SetConsoleWindowInfo();

先看一个C例子:

#include <stdio.h>   
#include <stdlib.h>
#include <Windows.h>   
#include <conio.h>   
#define N 255    
int main()   
{   
    HANDLE handle_out;  //定义一个句柄   
    CONSOLE_SCREEN_BUFFER_INFO scbi;    //定义一个窗口缓冲区信息结构体   
    COORD size = {80, 25};      //定义一个坐标结构体   
    char strtitle[N];   
    handle_out = GetStdHandle(STD_OUTPUT_HANDLE);   //获得标准输出设备句柄   
    GetConsoleScreenBufferInfo(handle_out, &scbi);  //获得窗口缓冲区信息   
    GetConsoleTitle(strtitle, N);   //获得当前窗口标题   
    printf("当前窗口标题为:%sn", strtitle);   
    _getch();   
    SetConsoleTitle("控制台窗口操作");     //设置窗口标题为“控制台窗口操作”   
    GetConsoleTitle(strtitle, N);           //获得当前窗口标题   
    printf("当前窗口标题为:%sn", strtitle);   
    _getch();   
    SetConsoleScreenBufferSize(handle_out, size);   // 重新设置缓冲区大小   
    _getch();   
    SMALL_RECT rc = {0, 0, 80-1, 25-1};     // 重置窗口位置和大小   
    SetConsoleWindowInfo(handle_out, 1, &rc);   
    CloseHandle(handle_out);    //关闭标准输出设备句柄   
    return 0;   
}

 

其中,SetConsoleScreenBufferSize函数指定新的控制台屏幕缓冲区的大小,以字符列和行为单位。
指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。
指定的大小也不能小于系统允许的最小大小。
这个最低取决于控制台当前的字体大小 (由用户选定)。
另外,GetConsoleTitle函数的具体实现取是否宏定义了UNICODE(与文件编码形式有关)。

黑漆漆的控制台也可以炫起来66666

标签:

原文地址:http://www.cnblogs.com/dzzy/p/4663882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!