谁能解释一下 HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE))在C语言中是什么意思
{
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
2024-10-28 广告
上句执行后,定义了一个句柄变量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头文件。
简单来说,上句执行后,定义了一个句柄变量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,标准错误的句柄。
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两个参数就使背景色为高亮蓝色。