Skip to content

Commit 3897a2d

Browse files
committed
change:将cmd色彩支持设置放到main入口处。
1 parent e928a09 commit 3897a2d

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

main.cpp

+22
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
#include "csp_base.hpp"
1010
#include "qm_use.h"
1111

12+
#ifdef _WIN32
13+
#include <windows.h>
14+
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
15+
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
16+
#endif
17+
#endif
18+
1219
bool parse(const std::string& str, CMDParam& param)
1320
{
1421
std::regex dateRegex(R"((-?\d{1,4})-(\d{1,2})-(\d{1,2})-(\d{1,2})-(\d{1,2})-(\d{1,2}))");
@@ -69,9 +76,24 @@ bool cmd(int argc, char** argv, CMDParam& param)
6976
}
7077
}
7178

79+
void set_output_supply()
80+
{
81+
#ifdef _WIN32
82+
// 获取标准输出句柄
83+
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
84+
// 启用 ANSI 转义代码支持
85+
DWORD mode;
86+
GetConsoleMode(hConsole, &mode);
87+
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
88+
SetConsoleMode(hConsole, mode);
89+
#endif
90+
}
91+
7292
int main(int argc, char** argv)
7393
{
7494
CMDParam param;
95+
set_output_supply();
96+
7597
if (!cmd(argc, argv, param)) {
7698
return 0;
7799
}

qm/print_base.cpp

-16
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@
66
#include "../csp_base.hpp"
77
#include "zh_lang.h"
88

9-
#ifdef _WIN32
10-
#include <windows.h>
11-
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
12-
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
13-
#endif
14-
#endif
15-
169
// 定义ANSI颜色码
1710
#define COLOR_RESET "\033[0m"
1811
#define COLOR_BLACK "\033[30m"
@@ -253,15 +246,6 @@ void CCmdPrint::print_other()
253246
void CCmdPrint::run(cppbox::CQimen* qm, int nType)
254247
{
255248
type_ = nType;
256-
#ifdef _WIN32
257-
// 获取标准输出句柄
258-
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
259-
// 启用 ANSI 转义代码支持
260-
DWORD mode;
261-
GetConsoleMode(hConsole, &mode);
262-
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
263-
SetConsoleMode(hConsole, mode);
264-
#endif
265249
this->qm_ = qm;
266250

267251
print_base();

test.cpp

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
#include <iostream>
22
#include "common/cmd_show.h"
33

4+
#ifdef _WIN32
5+
#include <windows.h>
6+
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
7+
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
8+
#endif
9+
#endif
10+
411
int main()
512
{
6-
std::array<int, 6> array{1, 0, 1, 0, 1, 0};
13+
#ifdef _WIN32
14+
// 获取标准输出句柄
15+
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
16+
// 启用 ANSI 转义代码支持
17+
DWORD mode;
18+
GetConsoleMode(hConsole, &mode);
19+
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
20+
SetConsoleMode(hConsole, mode);
21+
#endif
722

23+
std::array<int, 6> array{1, 0, 1, 0, 1, 0};
824
CGuaPrint print;
925
print.show_six(array);
1026

0 commit comments

Comments
 (0)