编制程序详解,字符显示器

前言:

 一、显示屏操作函数
     1. clrscr()清除字符窗口函数
     贰. window()字符窗口函数
     三. gotoxy()光标定位函数
     四. clreol() 清除光标行尾字符函数
     伍. insline() 插入空行函数
     陆. delline() 删除一行函数
     7. gettext() 拷进文字函数
     八. puttext() 拷出文字函数
     九. movetext() 移动文字函数
 2、字符属性函数
    10. textmode() 文本情势函数 
    1壹. highvideo()高亮度函数
    12. lowvideo() 低亮度函数
    13. normvideo(void);
    1肆. textcolor() 文本颜色函数
    一伍. textattr() 文本属性函数
    1六.textbackground() 文本背景函数
3、 屏显状态函数
    一柒. wherex() 光标处x坐标函数
    1八. wherey() 光标处y坐标函数
    1玖. gettextinfo() 获取文本窗口新闻函数

调控台文本窗口的决定是依照win32 api(win32api可驾驭为微软给大家提供的1类别函数的聚众)达成的;

    在Borland
C++里面提供了字符显示屏和图纸函数。字符显示屏的为主是窗口(Window),它是显示屏的位移有的,字符输出或展现在移动窗口中开始展览。窗口在缺省时,就是全体显示屏。窗口能够依赖供给钦命其尺寸。同样,对图片函数的操作,也提供了(Viewport)。也正是说图形函数的操作都是在视口上海展览中心开。图形视口与字符窗口具有同等的风味,用户能够在荧屏上定义大小不相同的视口,若不定义视口大小,它便是成套显示器。
   
窗口是在字符荧屏下的概念,只有字符技能在窗口中体现出来,那时用户能够访问的细小单位为2个字符。视口是在图纸荧屏状态下的定义,文本与图片都得以在视口上显得,用户可访问的纤维单位是一个像素(像素那壹术语最初用来指显示屏上异常的小的、单独的发光点单元。然方今后,其含义拓宽为指图形显示屏上的微乎其微可访问点)。
   
字符和图片状态下,显示器上的职位都以由它们的行与列所主宰的。有一点须提出:字符状态左上角坐标为(一,一),但图形左上角坐标为(0,0)。
    掌握字符显示器和图片函数与窗口和视口的关联是很爱抚的。举个例子,字符显示器光标地方函数gotoxy()将光标移到窗口的x,y地方上,那未必是周旋于漫天荧屏。上边介绍常用的几类字符荧屏函数的功功用途、操作方法及其例行程序。

例1:

1、显示器操作函数
   
编写程序绘图常常要用到对字符荧屏举办操作。比方,在往荧屏上写字符在此以前,首先要将显示屏清除根本。又如,有时须求在荧屏上多处写上肉中刺样的字符内容,那时最棒用荧屏拷贝来高功能地产生这一职务。对那几个操作,Borland
C++提供了一雨后玉兰片字符荧屏操作函数来兑现。

#include <stdio.h>int main()
{
    printf("Hello World!\n");
    return 0;
}
  1. clrscr()清除字符窗口函数
    效益:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(一,壹)处。
    用法:此函数调用情势为 void clrscr(void);
    表明:括号中void 表示无参数。
          该函数相应的头文件为conio.h
    返回值:无
    例:使用那些函数的例证见4.clreol()函数的实例中。

  2. window()字符窗口函数
    功能: 函数window()用于在钦命地方树立三个字符窗口。
    用法: 此函数调用情势为 void window(int left,int top,int right,int
    bottom);
    表达: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
          
    若有1个坐标是没用的,则window()函数不起功用。1旦该函数调用成功,那么具备定位坐标都以对峙于窗口的,而不是争论于全部荧屏。但是创建窗口所用的坐标总是相对整个荧屏的相对坐标,而不是争持当前窗口的相对坐标。那样用户就能够依赖各类急需树立多少个互不嵌套的窗口。
           此函数的头文件为conio.h。
    返回值:无
    例: 调用那几个函数的贯彻例见三.gotoxy()函数的例证中。

  3. gotoxy()光标定位函数
    效用: 函数gotoxy()将字显示器上的光标移到近来窗口钦赐的位置上。
    用法: 那个函数调用格局为void gotoxy(int x,int y);
    证实: 括号里x,y是,
    光标定位的坐标,若是内部二个坐标值无效(如坐标超界),那么光标不会活动。
           此函数在字符状态(有时称为文本状态)下平常用到
    ,其对应的头文件为conio.h
    返回值:无
    例:
    上边程序创立七个窗口,然后在窗口里呈现字符,字符的岗位是调用该函数鲜明的。
    #include”conio.h>
    void border(int startx,int starty,int endx,int endy)
    {
       register int i;
       gotoxy(1,1);
       for(i=0;i<=endx-startx;i++)
          putch(‘-‘);
       gotoxy(1,endy-starty);
       for(i=0;i<=endx-startx;i++)
          putch(‘-‘);
       for(i=2;i<=endy-starty;i++){
          gotoxy(1,i);
          putch(‘1’);
          gotoxy(endx-startx+1,i);
          putch(‘1’);
       }
    }

运维结果:

main()
{
   void border(int,int,int,int);
   clrscr();
   window(6,8,38,12);
   border(6,8,38,12);
   gotoxy(2,2);
   printf(“window 1”);
   window(8,16,40,24);
   border(8,16,40,24);
   gotoxy(3,2);
   printf(“window 2”);
   getch();
}

葡京娱乐场官网 1

  1. clreol() 清除光标行尾字符函数
    职能:
    函数clreol()在日前字符窗口中革除从光标地方到行尾的具有字符,而光标地点保持不改变。
    用法: 它的调用格局为void clreol(void);
    注脚: 此函数的相应头文件为 conio.h
    返回值:无
    例: 程序中采纳了函数clreol()和clrscr()
    #include “conio.h>
    void main()
    {
       register int i;
       gotoxy(6,8);
       printf(“This is a test of the clreol() function.”);
       getch();
       gotoxy(6,8);
       clreol();
       for(i=0;i<20;i++)
          printf(“Hello\n”);
       getch();
       clrscr();
    }

  2. insline() 插入空行函数
    效益:
    函数insline()插入一空行到眼下光标所在行上,同时光标以下的装有行都向下顺移壹行。
    用法: 此函数的调用方式为void insline(void);
    证实: 该函数只用于文书方式,并且在当了符窗口才有效。
           这几个函数的对应头文件是 conio.h
    返回值:无
    例: 程序给出了insline()函数的用法。
    #include “conio.h”
    void main()
    {
    葡京娱乐场官网,   registser int i;
       clrscr();
       for(i=1;i<24;i++)
       {
          gotoxy(1,i);
          printf(“This is line %d\n”,i);
       }
       getch();
       gotoxy(1,10);
       insline();
       getch();
    }

  3. delline() 删除一行函数
    功效: 函数delline()删除当前窗口内光标所在行,同时把该行上面全数行都上移壹行。
    用法: 此函数调用格局为 void delline(void);
    证实:
    注意,假如当前窗口小于整个显示屏,那么该函数只影响到窗口内的字符。
           那个函数相应的尾部文件是conio.h
    返回值: 无
    例:先在显示器上显得1陆行文字,然后删除第六行
    #include “conio.h”
    void main()
    {
       register int i;
       clrscr();
       for(i=0;i<16;i++) printf(“line %d\n”,i);
       getch();
       gotoxy(1,4);
       delline();
       getch();
    }

例第11中学,大家用printf()函数实现在支配台出口了hello
world!但是当大家想要将从前输出的剧情清除时,在stdio.h中的函数并不可能餍足大家的急需;那时大家就要借助win32api函数

七.gettext() 拷进文字函数
效果: 函数gettext()用于文书状态下将屏幕上矩形域内的文字拷进内部存款和储蓄器。
用法: 该函数调用格局为 int gettext(int left,int top,int right,int
bottom,void *buffer);
表明:
函数中参数left,top为矩形区域的左上角坐标,right,bottom为其右下角坐标,那一个坐标是显示屏的相对坐标,不是窗口的相对坐标。buffer指针必须指向二个足足保存该矩形域内文字的内部存款和储蓄器。所用内部存款和储蓄器大小按下式总括:
   点头用字节数=矩形哉内的行数×矩形域的列数×二
那边将行数乘以列数再乘以贰的原因是保留显示屏上各样字符要用七个字节存款和储蓄单元,一个字节存款和储蓄单元存放字符本身,而另三个存放其品质。
此函数相应的头文件是 conio.h
再次来到值: 若函数调用成功则赶回一,否则返顺0。
例:
把显示器左上角点(一,一)和右下角点(拾,十)的区域拷贝到buf指向的内存中去。
   buf=(char *)malloc(10*10*2);
   if(!buf)gettext(1,1,10,10,buf);

例2:

  1. puttext() 拷出文字函数
    成效:
    函数puttext()把原先由gettext()保存到buffer指向的内部存款和储蓄器中的文字拷出到显示器上多少个矩形区域中。
    用法: 此函数调用方式为 int puttext(int left,int top,int right,int
    bottom,void *buffer);
    证实:
    函数里left,top为付出的荧屏上矩形区域的左上角点,right,bottom为其右下角点,其坐标是用显示器的断然坐标,而不是用窗口的相对坐标。
       该函数相应的头文件为conio.h
    重回值: 函数调用成功重回值为一,不然重返0。
    例:
    荧屏上有些区域内容拷进buf指向的内部存款和储蓄器中,然后又将这么些文字拷出到显示器上新岗位。
       buf=(char *)malloc(10*10*2);
       gettext(1,1,10,10,buf);
       puttext(16,16,30,30,buf);

  2. movetext() 移动文字函数
    功效: 函数movetext()将显示器上三个矩形区域的文字移到另三个区域上。
    用法: 该函数调用方式为 int movetext(int left,int top,int right,int
    bottom,int newleft,int newtop);
    注解:
    下边left,top为矩形区域上角坐标,right,bottom为其右下角坐标,newleft,newright为活动到区域左上角坐标。那些坐标是荧屏的断然坐标,不是窗口的对立坐标。
      
    若要把显示屏上壹段文字移到显示屏的另一岗位,那么使用movetext()函数比用gettext()然后再用puttext()效用更加高。
       此函数相应的头文件是conio.h
    重返值: 要是有四个之上坐标无效,那么函数再次回到值为0,否则重临一。
    列:
    把显示屏左上角点(八,八),右下角点(20,20)的矩形区域文字移动到左上角点(10,10)的职位上:
       movetext(8,8,20,20,10,10);

  3. textmode() 文本方式函数
    效果: 函数textmode()针显示屏设置为文本形式(恐怕说字符状态)。
    用法: 函数调用格局为 void textmode(int mode);
    证实:
    参数mode必须为表一-第22中学所示的形式之1⑴以用情势名(符号值),也能够用其等价的整数值。

#include <stdio.h>
#include <windows.h>
int main()
{
    printf("Hello World!\n");
    Sleep(1000);
    system("cls");
    return 0;
}

表壹-贰 文本方式

情势名(符号值)         等价整数值      说   明

BW40                        0          40列黑白
C 40                        1          40列彩色
BW80                        2          80列黑白
C 80                        3          80列彩色
MONO                        7          80列单色

运转结果:

LASTMODE                   -一          上次方式

   调用该函数后,显示屏重新设置,并且有着字符的品质恢复生机其缺省值。
   此函数对应的头文件是conio.h
返回值: 无
例: 把显示器设置为80列彩色格局
   textmode(C80);

2、字符属性函数
  
用户能够设置字符展现的高亮度或低亮度的写的符闪烁及其背景颜色等。具备那么些操作的函数称为字符属性函数。除了仅帮衬单方式和单色的展现卡外,字符属性函数适用于任何全数的呈现卡。

  1. highvideo()高亮度函数
    意义: 函数highvideo()设置荧屏为高亮度展现。
    用法: 此函数调用格局为void highvideo(void);
    表达:
    调用该函数后,写到荧屏上的字符是高亮度的。此函数只适用于文本形式状态(或说字符显示屏状态)。
       那一个函数对应的头文件为 conio.h
    返回值: 无
    例: 设置荧屏展现为高亮度的。
       highvideo();

  2. lowvideo() 低亮度函数
    作用: 函数lowvideo()设置显示器为低亮度呈现。
    用法: 该函数调用格局为void lowvideo(void);
    表明:
    调用该函数后,此时写到显示屏上的字符是低亮度的。那一个函数只适用于文本格局状态(或说字符显示器状态)。
       此函数相应的头文件是 conio.h
    返回值: 无
    例: 设置显示器展现为低亮度的
       lowvideo();

  3. normvideo(void);
    职能: 函数normvideo()设置荧屏为正规亮度显示。
    用法: 这些函数调用形式为void normvideo(void);
    注解:
    调用该函数后,此时写到显示屏上的字符是健康亮度的,该函数只适用于文本方式状态(或说字符状屏幕状态)。
       此函数相应的头文件为conio.h
    返回值: 无
    例: 设置显示器展现为通常亮度。
       normvideo();

  4. textcolor() 文本颜色函数
    功能:
    函数textcolor()设置字符显示器下文件颜色(或字符颜色),它也得以用于使字符闪烁。
    用法: 这几个函数调用情势为void textcolor(int color);
    证实: 函数中参数color的有效值可取表一-三中的颜色名(即宏名)或等价值。

葡京娱乐场官网 2

表壹-3 颜色名与等价值

   名          等价值      含 义
BLACK             0          黑
BLUE              1          蓝
GREEN             2          绿
CYAN              3          青
RED               4          红
MAGENTA           5          洋红
BROWN             6          棕
LIGHTGRAY         7          淡灰
DRAKGRAY          8          深灰
LIGHTBLUE         9          淡蓝
LIGHTGREEN       10          淡绿
LIGHTCYAN        11          淡青
LIGHTRED         12          淡红
LIGHTMAGENTA     13          淡洋红
YELLOW           14          黄
WHITE            15          白

例第22中学,用到windows.h中的Sleep();system();函数,Sleep(一千)函数作用为延时1s后先后向下运作,system(“cls”)清除内容,所以在例第22中学,程序运维展现hello
world!1秒后就解除

BLINK           128          闪烁

textcolor()函数实践后,只影响其后输出探险符颜色,而不转移壹度在现阶段显示屏上的别样字符颜色。显著,如果须求输出的字符闪烁,只要将函数中参数color取为BLINK就可以,借使要使字符带颜色闪烁,就务须将所选的颜色值与128作“或”运算。
   此函数相应的头文件是 conio.h
返回值: 无
例:
上边程序段中率先条语句使出口的字符闪烁,第一条语句使字符输出为经色同时闪烁:
   textcolor(BLINK);
   printf(“hello”);
   textcolor(RED|BLINK);

  1. textattr() 文本属性函数
    效率:
    函数textattr()用于安装文本属性,即字符背景颜色、字符本人颜色和字符闪烁与否。
    用法: 函数调用方式为void textattr(int attribute);
    表明:
    设置字符背景颜色属性字节的最不难易行方法是,用所选的背景颜色值乘以16再与字符颜色值作按位或(ORAV四)运算。比方供给卡其灰背景、浅豆沙色字符,就安装成RED*1陆|GREEN,若还要字符闪烁,就把背景颜色值、字符颜色值与闪烁值一同
    按位作或运算。如蓝背景、黄字符且闪烁,就安装成为:
       YELLO|128|BLUE*16
       第0位用于安装字符颜色。
       此函数相应的头文件为conio.h
    返回值: 无
    例: 设置背景为黑古铜色、字符为革命并且字符闪烁:
       textattr(RED|128|BLUE*16);

1陆.textbackground() 文本背景函数
效率:
函数textbackground()设置字符显示屏下文件背景颜色(或字符背景颜色)。
用法: 此函数调用格局为void textbackground(int bcolor);
证实: 参数bcolor 的有效值取表一-四背景颜色(即宏名)或等价值。

用以调控台窗口操作的API函数如下:

表一-四 背景颜色与等价值

GetConsoleScreenBufferInfo 获得调整台窗口音讯

   背景颜色            等价值         含   义

   BLACK                 0               黑
   BLUE                  1               蓝
   GREEN                 2               绿
   CYAN                  3               青
   RED                   4               红
   MAGENTA               5               洋红

GetConsoleTitle 得到调节台窗口标题

   BROWN                 6               棕

调用该函数只影响两次三番写的字符背景颜色,而不改换目前浮今后荧屏上的字符背景颜色。
   那些函数对应的头文件是conio.h
返回值: 无
例: 设置文本背景颜色为茶青:
   textbackground(BLUE));

③、 屏显状态函数
此间提供两个在文书模式下显示屏呈现状态的函数

  1. wherex() 光标处x坐标函数
    效益: 函数wherex()再次来到当前窗口中光标处横向坐标。
    用法: 此函数调用方式为int wherex(void);
    表明: 这些函数调用无参数,其相应的头文件是conio.h
    重临值: 函数调用成功,重回光标处x坐标值。
    例: 调用这一个函数的实例见1八.wherey()函数的例中。

  2. wherey() 光标处y坐标函数
    作用: 函数wherey()再次回到当前窗口中光标处纵向坐标。
    用法: 该函数调用形式为int wherey(void);
    评释: 此函数调用无参数,其对应的头文件是conio.h
    再次回到值: 函数调用成功,重返光标处y坐标值。
    例:
    调作函数wherex()与wherey(),再次来到当前光标处x坐标与y坐标,并赋给整型变量xpos
    ,ypos。
       int xpos,ypos;
       xpos=wherex();
       ypos=wherey();

  3. gettextinfo() 获取文本窗口新闻函数
    职能: 函数gettextinfo()获取当前文件窗口音信,并存放在实参结构中。
    用法: 函数调用方式为void gettextinfo(struct text-info *info);
    表达: 函数中参数info 为struct text-info结构型指针,struct
    text-info结构在此函数相应的头文件中定义为:
       struct text-info{
          unsigned char winleft;         // 窗口左上角x坐标
          unsigned char wintop;          // 窗口左上角y坐标
          unsigned char winright;        // 窗口右下角x坐标
          unsigned char winbottom;       // 窗口右下角y坐标
          unsigned char attribute;       // 文本属性
          unsigned char normattr;        // 符合规律属性
          unsigned char currmode;        // 当前屏显情势
          unsigned char screenhight      // 文本窗口中度(以行数计)
          unsigned char screenwidth;     // 文本窗口宽度(以字符个数计)
          unsigned char curx;            // 光标处x坐标
          unsigned char cury;            // 光标处y坐标
      };
       记住,调用函数gettextinfo()时,要传送struct
    text-info结构型指针或该组织的首地址,不要传递结构变量本身。
       这几个函数对应的头文件是conio.h
    重临值:
    再次回到文本窗口角点坐标、高升幅、文本属性等值,并存放在info所指向的布局变量中。
    例: 程序语句表明什么正确调用gettextinfo()函数:
       struct text-info win-status;
       gettextinfo(&win-status);

 


ScrollConsoleScreenBuffer 在缓冲区中移动数据块

SetConsoleScreenBufferSize 改造内定缓冲区大大小小

SetConsoleTitle 设置调节台窗口题目

SetConsoleWindowInfo 设置调整台窗口音信

例3:

#include <windows.h>
#include <stdio.h>

int main(void)

{
       SetConsoleTitle(L"hello world!"); // 设置窗口标题
       printf("hello world!");
       return 0;
}

运作结果:

葡京娱乐场官网 3

在例叁中,大家利用了setconsoletitle()函数;窗口题目已然改产生为hello
world!了

至于其余函数的施用方法,能够度,这里权且不做赘述了。。。。。

 

一.调节台伊始化

 

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    //设置控制台窗口标题
    //SetConsoleTitle("更改标题字符串")
    SetConsoleTitleA("hello world!");

    //获取控制台窗口信息;
    //GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, CONSOLE_SCREEN_BUFFER_INFO *bInfo)
    //第一个hConsoleOutput参数(标准控制句柄)通过GetStdHandle()函数返回值获得
    //第二个参数CONSOLE_SCREEN_BUFFER_INFO 保存控制台信息结构体指针
        /*数据成员如下:
        {
            COORD dwSize; // 缓冲区大小
            COORD dwCursorPosition; //当前光标位置
            WORD wAttributes; //字符属性
            SMALL_RECT srWindow; //当前窗口显示的大小和位置
            COORD dwMaximumWindowSize; //最大的窗口缓冲区大小
        }
        */
    HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO bInfo;
    GetConsoleScreenBufferInfo(hOutput, &bInfo);
    cout << "窗口缓冲区大小:" << bInfo.dwSize.X << ", " << bInfo.dwSize.Y << endl;
    cout << "窗口坐标位置:" << bInfo.srWindow.Left << ", " << bInfo.srWindow.Top
         << ", "<< bInfo.srWindow.Right << ", " << bInfo.srWindow.Bottom << endl;

    //设置显示区域坐标
    //SetConsoleWindowInfo(HANDLE, BOOL, SMALL_RECT *);
    SMALL_RECT rc = {0,0, 79, 24}; // 坐标位置结构体初始化
    SetConsoleWindowInfo(hOutput,true ,&rc);
    cout << "窗口显示坐标位置:" << bInfo.srWindow.Left << ", " << bInfo.srWindow.Top
         << ", "<< bInfo.srWindow.Right << ", " << bInfo.srWindow.Bottom << endl;

    //更改指定缓冲区大小
    //SetConsoleScreenBufferSize(HANDLE hConsoleOutput, COORD dwSize)
    //COORD为一个数据结构体
    COORD dSiz = {80, 25};
    SetConsoleScreenBufferSize(hOutput, dSiz);
    cout << "改变后大小:" << dSiz.X << ", " << dSiz.Y << endl;

    //获取控制台窗口标题
    //GetConsoleTitle(LPTSTR lpConsoleTitle, DWORD nSize)
    //lpConsoleTitle为指向一个缓冲区指针以接收包含标题的字符串;nSize由lpConsoleTitle指向的缓冲区大小
    char cTitle[255];
    GetConsoleTitleA(cTitle, 255);
    cout << "窗口标题:" << cTitle << endl;

    // 关闭标准输出设备句柄
    CloseHandle(hOut);
    return 0;
}

运转结果:

葡京娱乐场官网 4

 

二.安装文本属性(文本颜色、移动决定)

 

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    /*设置文本属
    BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);//句柄, 文本属性*/

    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
    WORD wr1 = 0xfa;//定义颜色属性;第一位为背景色,第二位为前景色
    SetConsoleTextAttribute(hOut, wr1);
    cout << "hello world!" << endl;

    WORD wr2 = FOREGROUND_RED | FOREGROUND_INTENSITY;//方法二用系统宏定义颜色属性
    SetConsoleTextAttribute(hOut, wr2);
    cout << "hello world!" << endl;

    /*移动文本位置位置
    BOOL ScrollConsoleScreenBuffer(HANDLE hConsoleOutput, CONST SMALL_RECT* lpScrollRectangle, CONST SMALL_RECT* lpClipRectangle,
                                   COORD dwDestinationOrigin,CONST CHAR_INFO* lpFill);
                                  // 句柄// 裁剪区域// 目标区域 // 新的位置// 填充字符*/
    //输出文本
    SetConsoleTextAttribute(hOut, 0x0f);
    cout << "01010101010101010101010101010" << endl;
    cout << "23232323232323232323232323232" << endl;
    cout << "45454545454545454545454545454" << endl;
    cout << "67676767676767676767676767676" << endl;

    SMALL_RECT CutScr = {1, 2, 10, 4}; //裁剪区域与目标区域的集合行成剪切区域
    SMALL_RECT PasScr = {7, 2, 11, 9}; //可以是NULL,即全区域
    COORD pos = {1, 8};     //起点坐标,与裁剪区域长宽构成的区域再与目标区域的集合为粘贴区

    //定义填充字符的各个参数及属性
    SetConsoleTextAttribute(hOut, 0x1);
    CONSOLE_SCREEN_BUFFER_INFO Intsrc;
    GetConsoleScreenBufferInfo(hOut, &Intsrc);
    CHAR_INFO chFill = {'A',  Intsrc.wAttributes}; //定义剪切区域填充字符
    ScrollConsoleScreenBuffer(hOut, &CutScr, &PasScr, pos, &chFill); //移动文本

    CloseHandle(hOut); // 关闭标准输出设备句柄
    return 0;
}

 

运行结果:

葡京娱乐场官网 5

WORD文本属性预定义宏:(可以直接用16进制表示,WORD w = 0xf0;前一位表示背景色,后一位代表前景色)
FOREGROUND_BLUE 蓝色
FOREGROUND_GREEN 绿色
FOREGROUND_RED 红色
FOREGROUND_INTENSITY 加强
BACKGROUND_BLUE 蓝色背景
BACKGROUND_GREEN 绿色背景
BACKGROUND_RED 红色背景
BACKGROUND_INTENSITY 背景色加强
COMMON_LVB_REVERSE_VIDEO 反色
当前文本属性信息可通过调用函数GetConsoleScreenBufferInfo后,在CONSOLE_SCREEN_ BUFFER_INFO结构成员wAttributes中得到。

在指定位置处写属性
    BOOL WriteConsoleOutputAttribute(HANDLE hConsoleOutput,  CONST WORD *lpAttribute, DWORD nLength,
                                    COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten);
                                    //句柄, 属性, 个数, 起始位置, 已写个数*/
填充指定数据的字符
    BOOL FillConsoleOutputCharacter(HANDLE hConsoleOutput, TCHAR cCharacter,DWORD nLength, COORD dwWriteCoord,
                               LPDWORD lpNumberOfCharsWritten);
                               // 句柄, 字符, 字符个数, 起始位置, 已写个数*/
在当前光标位置处插入指定数量的字符
    BOOL WriteConsole(HANDLE hConsoleOutput, CONST VOID *lpBuffer, DWORD nNumberOfCharsToWrite,
                     LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved);
                     //句柄, 字符串, 字符个数, 已写个数, 保留*/
向指定区域写带属性的字符
    BOOL WriteConsoleOutput(HANDLE hConsoleOutput, CONST CHAR_INFO *lpBuffer, COORD dwBufferSize,
                        COORD dwBufferCoord,PSMALL_RECT lpWriteRegion );
                        // 句柄 // 字符数据区// 数据区大小// 起始坐标// 要写的区域*/
在指定位置处插入指定数量的字符
    BOOL WriteConsoleOutputCharacter(HANDLE hConsoleOutput, LPCTSTR lpCharacter, DWORD nLength,
                                     COORD dwWriteCoord, LPDWORD lpNumberOfCharsWritten);
                                     // 句柄// 字符串// 字符个数// 起始位置// 已写个数*/
填充字符属性
    BOOL FillConsoleOutputAttribute(HANDLE hConsoleOutput, WORD wAttribute,DWORD nLength,
                                   COORD dwWriteCoord, LPDWORD lpNumberOfAttrsWritten);
                                   //句柄, 文本属性, 个数, 开始位置, 返回填充的个数*/

// 设置代码页,
SetConsoleOutputCP(437);如(简体中文) 设置成936

3.光标操作调节

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    cout << "hello world!" << endl;

    //设置光标位置
    //SetConsoleCursorPosition(HANDLE hConsoleOutput,COORD dwCursorPosition);
    //设置光标信息
    //BOOL SetConsoleCursorInfo(HANDLE hConsoleOutput, PCONST PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
    //获取光标信息
    //BOOL GetConsoleCursorInfo(HANDLE hConsoleOutput,  PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
    //参数1:句柄;参数2:CONSOLE_CURSOR_INFO结构体{DWORD dwSize;(光标大小取值1-100)BOOL bVisible;(是否可见)}

    Sleep(2000);//延时函数
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD w = {0, 0};
    SetConsoleCursorPosition(hOut, w);
    CONSOLE_CURSOR_INFO cursorInfo = {1, FALSE};
    Sleep(2000);//延时函数
    SetConsoleCursorInfo(hOut, &cursorInfo);
    CloseHandle(hOut); // 关闭标准输出设备句柄
    return 0;
}

运营结果:

输出hello
world!后延时两秒,光标从第3行移到行首,再2秒后光标隐藏不显得;

四.键盘操作调控

 

#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
HANDLE hOut;
//清除函数
void cle(COORD ClPos)
{
    SetConsoleCursorPosition(hOut, ClPos);
    cout << "            " << endl;
}
//打印函数
void prin(COORD PrPos)
{
    SetConsoleCursorPosition(hOut, PrPos);
    cout << "hello world!" << endl;
}
//移动函数
void Move(COORD *MoPos, int key)
{
    switch(key)
    {
    case 72: MoPos->Y--;break;
    case 75: MoPos->X--;break;
    case 77: MoPos->X++;break;
    case 80: MoPos->Y++;break;
    default: break;
    }
}

int main()
{
    cout << "用方向键移动下行输出内容" << endl;
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);//取句柄
    COORD CrPos = {0, 1};//保存光标信息
    prin(CrPos);//打印
    //等待键按下
    while(1)
    {
        if(kbhit())
        {
            cle(CrPos);//清除原有输出
            Move(&CrPos, getch());
            prin(CrPos);
        }
    }
    return 0;
}

 

运行结果:

葡京娱乐场官网 6

能够用方向键肆意运动hello
world!

留神区分 getch();
getche(); getcher();函数

 

综合案例贪吃蛇,推箱子,俄罗丝四方(待续。。。)