谁能解释一下 HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE))在C语言中是什么意思

void color(int b) //颜色函数
{
HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ; //获取标准输出的句柄会把字符输出到屏幕上,用的就是这个句柄。
SetConsoleTextAttribute(hConsole,b) ;//SetConsoleTextAttribute是API设置字体颜色和背景色的函数,但是我不懂如何字体颜色的种类是怎么设置的
}

我查阅了一下HANDLE是一个句柄,但是我不懂hConsole是什么意思,我猜测它是一个变量,还有GetStdHandle是也是一个句柄,但我不懂它为什么要加上两个括号啊
我没学过windows API但我想看懂一个游戏代码需要用到这个,希望各位高手能帮助我

HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE))在C语言中表示:从一个特定的标准设备(标准输出)中取得一个句柄(用来标识不同设备的数值)。

其中,STD_OUTPUT_HANDLE表示标准输出的句柄。GetStdHandle是Windows API函数,hConsole只是一个句柄变量。HANDLE是Windows用来表示对象的(不是C++的对象),HWND是其中一种,HWND是HANDLE,但HANDLE不只是HWND,HANDLE是一个通用句柄表示。

GetStdHandle((STD_OUTPUT_HANDLE))等效于GetStdHandle(STD_OUTPUT_HANDLE),没必要添加双括号,添加了也没有错。

扩展资料:

GetStdHandle函数的用法:

语法:HANDLE GetStdHandle( DWORD nStdHandle );

GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。

参数:

值为几种类型的一种:STD_INPUT_HANDLE 标准输入的句柄、STD_OUTPUT_HANDLE 标准输出的句柄、STD_ERROR_HANDLE 标准错误的句柄。

参考资料来源:百度百科-GetStdHandle

参考资料来源:百度百科-handle

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-14

上句执行后,定义了一个句柄变量hConsole,将其赋值为GetStdHandle((STD_OUTPUT_HANDLE)),即标准输出的句柄。

例如:

#include <stdio.h>

#include <windows.h>

int main(void)

{

HANDLE consolehwnd; //创建句柄,详细句柄知识,请百度一下或查MSDN

consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE); //实例化句柄

SetConsoleTextAttribute(consolehwnd, FOREGROUND_RED);//设置字体颜色

printf("hello ");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("world!\n");

getchar();

SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY |BACKGROUND_BLUE);
printf("It is really beautiful!\n");

return 0;

}

扩展资料:

注意事项

SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数。参数表中使用两个属性(属性之间用,隔开)。GetStdHandle()和FOREGROUND_*或BACKGROUND_*。*值为INTENSITY或RED或GREEN或BLUE。第一个属性获得句柄(即要设置颜色的地方),第二个属性设置颜色。属性相加是在属性值中间加“|”隔开即可。

GetStdHandle(STD_OUTPUT_HANDLE)获得句柄。

FOREGROUND_INTENSITY表示设置前景色为高亮显示。

FOREGROUND_RED表示设置前景色为红色,即字体颜色为红色。

FOREGROUND_GREEN表示设置前景色为绿色,即字体颜色为绿色。

FOREGROUND_BLUE表示设置前景色为蓝色,即字体颜色为蓝色。

BACKGROUND_INTENSITY表示设置背景色为高亮显示。

BACKGROUND_RED 表示设置背景色为红色。

BACKGROUND_GREEN表示设置背景色为绿色。

BACKGROUND_BLUE表示设置背景色为蓝色。

说明:在使用时要在预处理中包含window.h头文件。

本回答被网友采纳
第2个回答  推荐于2017-09-24
HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE));
简单来说,上句执行后,定义了一个句柄变量hConsole,将其赋值为GetStdHandle((STD_OUTPUT_HANDLE)),即标准输出的句柄,示例代码,
//程序功能输出绿色的“hello world!”
#include <stdio.h>
#include <windows.h>
int main(void)
{
HANDLE hwnd = GetStdHandle(STD_OUTPUT_HANDLE); //实例化句柄hwnd
SetConsoleTextAttribute(hwnd, FOREGROUND_GREEN);//设置字体颜色为绿色 ,SetConsoleTextAttribute是API设置控制台窗口字体颜色和背景色的函数
printf("hello world!\n");
return 0;
}

HANDLE GetStdHandle( DWORD nStdHandle );是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄(用来标识不同设备的数值)。nStdHandle为下列值之一,

STD_INPUT_HANDLE,标准输入的句柄;

STD_OUTPUT_HANDLE,标准输出的句柄;
STD_ERROR_HANDLE,标准错误的句柄。
第3个回答  推荐于2017-10-05
hConsole这不是你自己写的变量名吗?
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE) ; 这样就行了,他多了一对括号而已。

先看一个简单的程序例:
#include <stdio.h>
#include <windows.h>
int main(void)
{
HANDLE consolehwnd; //创建句柄,详细句柄知识,请百度一下或查MSDN
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE); //实例化句柄
SetConsoleTextAttribute(consolehwnd, FOREGROUND_RED);//设置字体颜色
printf("hello ");
SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("world!\n");
getchar();
SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY |BACKGROUND_BLUE);
printf("It is really beautiful!\n");
return 0;
}
参数说明:
FOREGROUND_RED表示设置前景色为红色,即字体的颜色为红色;
FOREGROUND_INTENSITY 表示设置前景色为高亮显示,FOREGROUND_GREEN表示绿色,两个参数中间加“|”表示前景色为高亮绿色;
BACKGROUND_INTENSITY表示设置背景色为高亮显示,BACKGROUND_BLUE表示背景色为蓝色,BACKGROUND_INTENSITY |BACKGROUND_BLUE两个参数就使背景色为高亮蓝色。本回答被提问者采纳
第4个回答  2013-03-03
STD_OUTPUT_HANDLE不用加括号,hConsole的翻译是控制台句柄,这里用它操纵控制台,比如SetConsoleTextAttribute可以修改hConsole对应的控制台上面的文字属性

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网