读推箱子程序

句柄

Windows是一个以虚拟内存为基础的操作系统,很多时候,进程的代码和数据并不全部装入内存, 进程的某一段装入内存后,还可能被换出到外存,当再次需要时,再装入内存。 两次装入的地址绝大多数情况下是不一样的。 也就是说,同一对象在内存中的地址会变化。 但是 有一个固定的地址(句柄),指向一个固定的位置(区域A),而区域A中的值可以动态地变化,它时刻记录着当前时刻对象在内存中的地址。 1.所谓“唯一”、“不变”是指在程序的一次运行中。如果本次运行完,关闭程序,再次启动程序运行,那么这次运行中,同一对象的句柄的值和上次运行时比较,一般是不一样的。

2.句柄是对象生成时系统指定的,属性是只读的,程序员不能修改句柄。

3.不同的系统中,句柄的大小(字节数)是不同的,可以使用sizeof()来计算句柄的大小。

4.通过句柄,程序员只能调用系统提供的服务(即API调用),不能像使用指针那样,做其它的事。

color

改变整体

system(color XX);

改变局部

void Color (int m)
{
    HANDLE consolehwnd;/*创建句柄*/ 
    consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);/*实例化句柄*/
    SetConsoleTextAttribute(consolehwnd, m);  //颜色控制
}	
#include <stdio.h>
#include <windows.h>
int main(void)
{
    HANDLE consolehwnd;//创建句柄
    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;
}

ASCII码

键盘的上下左右是ASCII的扩展,解析为ASCII码是两个数字组合,上(224+72)下(224+80)左(224+75)右(224+77)


本文章使用limfx的vscode插件快速发布