在学C语言控制台窗口图形界面编程,抄的https://blog.csdn.net/liluo_2951121599/article/details/66474233这里的代码。。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
using namespace std;
#define N 255
const WORD FORE_BLUE = FOREGROUND_BLUE;
const WORD FORE_GREEN = FOREGROUND_GREEN;
const WORD FORE_RED = FOREGROUND_RED;
const WORD FORE_PURPLE = FORE_BLUE | FORE_RED;
const WORD FORE_CYAN = FORE_BLUE | FORE_GREEN;
const WORD FORE_YELLOW = FORE_RED | FORE_GREEN;
const WORD FORE_GRAY = FOREGROUND_INTENSITY;
const WORD BACK_BLUE = BACKGROUND_BLUE;
const WORD BACK_GREEN = BACKGROUND_GREEN;
const WORD BACK_RED = BACKGROUND_RED;
const WORD BACK_PURPLE = BACK_BLUE | BACK_RED; //紫色
const WORD BACK_CYAN = BACK_BLUE | BACK_GREEN; //青色
const WORD BACK_YELLOW = BACK_RED | BACK_GREEN;
const WORD BACK_GRAY = BACKGROUND_INTENSITY;
int main()
{
HANDLE handle_out; //定义句柄
CONSOLE_SCREEN_BUFFER_INFO screen_info; //定义窗口缓冲区信息结构体
const char* str = "Hello World!";
int len = strlen(str), i;
WORD shadow = BACKGROUND_INTENSITY;//也就是BACK_GRAY 灰色背景 //阴影属性
WORD text = BACK_GREEN | BACK_GRAY;
handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(handle_out, &screen_info);
SMALL_RECT rc; //文本输出区域
COORD posText;
COORD posShadow; //两个起始坐标
//确定区域边界
rc.Top = 8;
rc.Bottom = rc.Top + 4;
rc.Left = (screen_info.dwSize.X - len) / 2 - 2; //可以让输出的字符串居中的左边界
rc.Right = rc.Left + len + 4;
//确定文本框起始坐标
posText.X = rc.Left;
posText.Y = rc.Top;
//确定阴影框的起始坐标
posShadow.X = posText.X + 1;
posShadow.Y = posText.Y + 1;
//输出阴影框
LPDWORD a = NULL;
for (i = 0;i < 5;++i)
{
FillConsoleOutputAttribute(handle_out, shadow, len + 4, posShadow, NULL); //这里报错,但是其实尝试之后下面的fill也会报错
posShadow.Y++;
}
//输出文本框
for (i = 0; i < 5; ++i)
{
FillConsoleOutputAttribute(handle_out, text, len + 4, posText, NULL);
posText.Y++;
}
//设置文本输出处的坐标
posText.X = rc.Left + 2;
posText.Y = rc.Top + 2;
WriteConsoleOutputCharacter(handle_out, str, len, posText, NULL);
SetConsoleTextAttribute(handle_out, screen_info.wAttributes);
CloseHandle(handle_out);
return 0;
}
其中str原文是使用char*来声明,但是我声明的时候会报错不知道为什么
加了const才正常
这里可以看到这个函数是运行完了才报错的
只运行了一次,没有进行下一个循环
代码都是照抄的啊。怎么会事呢
也尝试了换字符集,也没用
也尝试了抄另一个代码,只要有这个函数都报错。