您的位置:首页 > 编程语言 > PHP开发

WriteConsoleOutput(三)

2016-12-29 14:42 337 查看
 如何在控制台的中间显示  HELL WORDL!  的字符串 ?

一 显示效果:



二代码

#include <stdio.h>
#include <windows.h>
#include<string>
using namespace std;
#define LINE 12 //控制台的13行(第一行为0,第二行为1)
#define COLUNM 35 //控制台的36列(第一列为0,第二列为1)
void main()
{
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台输入句柄
CHAR_INFO CharInfo;
int i = 0;
string str = "HELLO WORLD!";
CHAR_INFO charInfoAarray[80 * 25];//缓存区大小(即控制台的大小25行80列)
COORD dwBufferSize = { 80, 25 };//固定值(控制台窗口固定的属性值)
COORD dwBufferCoord = { COLUNM, LINE };//缓冲区左上角的起始位置
SMALL_RECT rect = { COLUNM, LINE, COLUNM + 11, LINE };//显示多大的缓冲区: 大小是一个矩形(11 等于 字符串长度 减 1)
CharInfo.Attributes = FOREGROUND_RED | BACKGROUND_GREEN;//前景色为红色,背景色为绿色

for (i = 0; i<str.length(); i++)
{
CharInfo.Char.AsciiChar = str[i];//从字符串里将每个字符取出来
charInfoAarray[80 * LINE + (COLUNM + i)] = CharInfo;//80是每行最多显示的字符个数(即80列)
}
WriteConsoleOutput(hConsoleOutput, charInfoAarray, dwBufferSize, dwBufferCoord, &rect);
getchar();
}


三 常见问题

1 什么是控制台的中间?

控制台默认大小是80列25行。因此从控制台的13行36列的位置开始显示字符串。

2 为什么同样的代码运行后我的程序无法显示出"HELLO WORD"?

 需要在vs里将字符集设置成多字节字符集,如下图设置:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: