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

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

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

2019-09-22 · 分享科技资讯,共享科技生活
八哥说科技
采纳数:111 获赞数:78610

向TA提问 私信TA
展开全部

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

名片
2024-10-28 广告
作为优菁科技(上海)有限公司的一员,Altair HyperWorks是我们重点代理的CAE软件套件。该软件以其全面的仿真能力、丰富的建模工具和高效的优化设计功能著称,广泛应用于汽车、航空航天、能源及电子等行业。HyperWorks通过集成... 点击进入详情页
本回答由名片提供
大野瘦子
高粉答主

2019-07-14 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:32.7万
展开全部

上句执行后,定义了一个句柄变量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头文件。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyl0462
推荐于2017-09-24 · TA获得超过1082个赞
知道小有建树答主
回答量:433
采纳率:75%
帮助的人:326万
展开全部
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,标准错误的句柄。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mapgis62
推荐于2017-10-05 · TA获得超过229个赞
知道答主
回答量:108
采纳率:0%
帮助的人:142万
展开全部
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两个参数就使背景色为高亮蓝色。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaaaaz
2013-03-03 · TA获得超过178个赞
知道答主
回答量:136
采纳率:100%
帮助的人:108万
展开全部
STD_OUTPUT_HANDLE不用加括号,hConsole的翻译是控制台句柄,这里用它操纵控制台,比如SetConsoleTextAttribute可以修改hConsole对应的控制台上面的文字属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式