WriteConsoleOutput(三)
2016-12-29 14:42
337 查看
如何在控制台的中间显示 HELL WORDL! 的字符串 ?
一 显示效果:
![](https://img-blog.csdn.net/20161229144246403)
二代码
#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里将字符集设置成多字节字符集,如下图设置:
![](https://img-blog.csdn.net/20170112095731042)
一 显示效果:
二代码
#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里将字符集设置成多字节字符集,如下图设置:
相关文章推荐
- WriteConsoleOutputCharacter
- [c#] where to see console.write output in visual studio?
- Write debug output to console window
- WriteConsoleOutput(一)
- WriteConsoleOutput(二)
- 爱上MVC~Razor引擎时,在遍历中巧用Output.Write方法
- Console.WriteLine()方法
- C#控制台应用程序 “输出”到控制台 Console.WriteLine
- C# Console.WriteLine()函数中{}输出格式详解
- [Android] Unparsed aapt error(s)! Check the console for output
- [Android] Unparsed aapt error(s)! Check the console for output
- [Javascript] Grouping and Nesting Console Log Output
- C#控制台基础 分析system.console.writeline("hello");的语句成分
- 错误集锦之 "Unparsed aapt error(s)! Check the console for output".
- Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64
- Write Read Writeln Readln console
- Local IIS 7.0 - CS0016: Could not write to output file / Microsoft.Net > Framework > v4.0.30319 > Temporary ASP.NET Files
- 【Unity&JSON】Console.WriteLine的问题
- Redirecting Console.WriteLine() to Textbox
- asp.net发布webservice出现‘Could not write to output file ‘解决办法