一.最简单的方法就是全局控制,觉得有点傻瓜的方法/(ㄒoㄒ)/~~
注意都需要头文件<windows.h>
..............system("color 04");
#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_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(与文件编码形式有关)。
原文:http://www.cnblogs.com/dzzy/p/4663882.html