【发布时间】:2021-06-08 12:58:15
【问题描述】:
我该如何做主题行中提到的事情?
下面是我的控制台应用程序的屏幕截图以及一些代码。
switch (indicator) {
case GreenFlag:
indicator = GreenFlag;
system("CLS");
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_GREEN);
cout << "IF YOUR CAR ISN'T LEAKING OIL AND YOU DON'T MAKE A NOISE YOU'RE WELCOME TO PARK HERE!" << endl << endl;
break;
...
default:
system("CLS");
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
cout << "INCORRECT OPTION, PLEASE TRY AGAIN!" << endl << endl;
break;
}
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), 7);
【问题讨论】:
-
写空格有用吗?然后你只需要弄清楚宽度
-
@Jeffrey 可能可行,但老实说,这更像是一种黑客行为,而不是一个可行的解决方案。
-
OT,但你刚刚描述了整个 winapi ;-)
-
控制台是基于字符的。它没有行和列的概念。如果您的程序需要那种更高级别的信息,您将不得不改用Console API(如FillConsoleOutputAttribute)。完全不是面向未来的,但你有它。 @jef 让我们玩个游戏:命名一个几十年来一直与 ABI 兼容的 API。如果你找到一个不是 Windows API 的,你就赢了。
-
“完全不是面向未来的” 使用 Window API 意味着您将不得不担心您的应用程序在大约半个世纪后会失败。选择加入the future 没有错。我的评论只是为了说明,“历史保存” 对一些(一个)公司意味着什么。无论如何,如果您拨打
system("CLS")电话,您已经在借用时间了。
标签: c++ winapi console-application codeblocks