gpt4 book ai didi

c - 从 c 中的函数返回 SetConsoleTextAttribute 颜色值

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:01 25 4
gpt4 key购买 nike

目前我正在尝试调用一个函数来使用 windows.h 函数来更改文本背景的颜色。我以前做过,但不是从另一个函数做的。问题是函数需要以某种方式返回颜色值还是有问题。如果发生任何变化,则从另一个函数调用该函数。

一起编写代码:

void setColour(HANDLE* hConsole, int ChangeColour, int Red, int Green, int Blue, int Colour) {
CONSOLE_SCREEN_BUFFER_INFOEX info;
info.cbSize = sizeof(info);
GetConsoleScreenBufferInfoEx(hConsole, &info);
info.ColorTable[ChangeColour] = RGB(Red, Green, Blue);
SetConsoleTextAttribute(hConsole, Colour);
}

void mainMenu(WindowProp* Dimensions, HANDLE* hConsole) {
getWindowSize(Dimensions);
clearScreen();
setColour(hConsole, 3, 120, 120, 236, 48);
printf("Set");
int DisplayRowCount, DisplayColumnCount;
for (DisplayRowCount = 0; DisplayRowCount <= Dimensions->Y-1; DisplayRowCount++) {
for (DisplayColumnCount = 0; DisplayColumnCount <= Dimensions->X-1; DisplayColumnCount++) {
printf(" ");
}
}
}

mainMenu 从 main 调用:

mainMenu(&WindowP, hConsole);

最佳答案

好的,我已经修好了。我首先决定在 mainMenu() 函数中声明 HANDLE 值并删除 HANDLE 指针。

其次,setColour() 函数的 GetConsoleScreenBufferInfoEx() 在更改颜色值之前确实被调用,但在修改颜色值之后没有被调用,因此我需要再次调用 GetConsoleScreenBufferInfoEx() 以获取要使用的新颜色值.

固定代码:

void setColour(HANDLE* hConsole, int ChangeColour, int Red, int Green, int Blue, int Colour) {
CONSOLE_SCREEN_BUFFER_INFOEX info;
info.cbSize = sizeof(info);
GetConsoleScreenBufferInfoEx(hConsole, &info);
info.ColorTable[ChangeColour] = RGB(Red, Green, Blue);
GetConsoleScreenBufferInfoEx(hConsole, &info);
SetConsoleTextAttribute(hConsole, Colour);
}

void mainMenu(WindowProp* Dimensions) {
getWindowSize(Dimensions);
clearScreen();
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
setColour(hConsole, 3, 120, 120, 236, 48);
int DisplayRowCount, DisplayColumnCount;
for (DisplayRowCount = 0; DisplayRowCount <= Dimensions->Y-1; DisplayRowCount++) {
for (DisplayColumnCount = 0; DisplayColumnCount <= Dimensions->X-1; DisplayColumnCount++) {
printf(" ");
}
}
}

关于c - 从 c 中的函数返回 SetConsoleTextAttribute 颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com