搜索

分享一个可以在《啊哈C》里面吧单句变颜色的代码

查看数: 1756 | 评论数: 3 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-1-24 16:57

正文摘要:

提供者:梦境传说 从群里看到的 #include <stdio.h> #include <Windows.h> int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FO ...

回复

趣味的吃 发表于 2015-2-2 09:14:22
改了下,为什么不行了???
代码:[mw_shl_code=c,true]#include <stdio.h>
#include <windows.h>

        void moshu()
        {
                printf("\n");
                HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
                SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
                printf("把这句话颜色变成红色\n");
                system("pause");
                SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
                printf("把这句话颜色变成黄色\n");
                system("pause");
        }

int main()
{

        char a;
        printf("今天我要给大家变一个魔术,请看:\n");
        system("pause");
        printf("下面魔术即将开始……\n");
        system("pause");
        printf("下面,我将会把下面的字变颜色……\n");
        printf("大家信不信(Y/N)?");
        scanf("%c",&a);
        if(a=='Y' || a=='y')
        {
                printf("好了,你到底看不看了?(Y/N)?");
                scanf("%c",&a);
                if(a=='Y' || a=='y')
                {
                moshu();

                }
                else
                {        return;  }
        }
        else
        {
                printf("好!你敢不信!(咬牙切齿中……)我现在就给你变!");
                Sleep(3000);
                moshu();

        }
        system("pause");
        return 0;

}[/mw_shl_code]
Dsp 发表于 2014-1-30 14:56:01
{:soso_e179:}赞一个
981013 发表于 2014-1-26 13:15:03
本帖最后由 981013 于 2014-1-26 13:19 编辑

  1. BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttributes);
复制代码
第一个参数就是用GetStdHandle(HANDLE GetStdHandle(DWORD nStdHandle);参数有:STD_INPUT_HANDLE(输入),STD_OUTPUT_HANDLE(输出)及STD_ERROR_HANDLE(错误)。)取到的设备句柄,第二个参数用来设置设备的属性。
在XP系统 控制台一共有16种文字颜色,16种背景颜色,可以通过:文字颜色 + 背景颜色 * 0x10 来设置控制台的颜色。
已经定义好的颜色常量如下:
文字颜色使用如下组合:
FOREGROUND_BLUE      0x0001  
FOREGROUND_GREEN     0x0002
FOREGROUND_RED       0x0004
FOREGROUND_INTENSITY 0x0008
背景颜色使用如下组合(其实就是上面值*0x10):
BACKGROUND_BLUE      0x0010
BACKGROUND_GREEN    0x0020
BACKGROUND_RED       0x0040
BACKGROUND_INTENSITY 0x0080
上面的颜色可以任意组合,如知道黄色可以由红色和绿色组成,所以可以用FOREGROUND_GREEN | FOREGROUND_RED来表示黄色的文字。

默认情况下控制台的文字颜色是白色即用FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE也可以直接用7表示,背景颜色为黑色即用0表示。

下面是已经封装好的函数:
  1. BOOL SetConsoleColor(WORD wAttributes)
  2. {
  3. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  4. if (hConsole == INVALID_HANDLE_VALUE)
  5. return FALSE;

  6. return SetConsoleTextAttribute(hConsole, wAttributes);
  7. }
复制代码

资料来自互联网搜索结果

评分

参与人数 1啊哈币 +3 收起 理由
李掌柜 + 3 神马都是浮云

查看全部评分

快速回复 返回顶部 返回列表