c语⾔windows.h头⽂件详解
如果c语⾔库⾥没有某个头⽂件 只需要将下好的头⽂件放⼊下⾯的路径即可
windows.h头⽂件包含的函数及其⽤法
1.GetAsyncKeyState()()//通过函数来判断按键按下的状态
主要⽤法是VK_键的名称
例如 GetAsyncKeyState(VK_SHIFT)
GetAsyncKeyState(VK_LSHIFT)
GetAsyncKeyState(VK_RSHIFT)
MENU代表的是这是alt键
1)if(GetAsyncKeyState(VK_LSHIFT))
这样写是不对的。
GetAsyncKeyState的返回值表⽰两个内容,⼀个是最⾼位bit的值,代表这个键是否被按下,⼀个是最低位bit的值,代表在上次调⽤GetAsyncKeyState后,这个键是否被按下。
应该是
if(GetAsyncKeyState(VK_LSHIFT)&&ox8000)
(2)SHORT GetKeyState(int nVirtKey);
SHORT GetAsyncKeyState(int vKey);
BOOL GetKeyboardState(PBYTE lpKeyState);
三个取key status的函数的最⼤区别是:
第⼀个:是从windows消息队列中取得键盘消息,返回key status.
第⼆个:是直接侦测键盘的硬件中断,返回key status.
第三个:是当从windows消息队列中移除键盘消息时,才才返回key status.
2.system("pause");//程序暂停,显⽰按下任意键继续
3.Sleep(1000);//延迟1000毫秒,切记S⼤写
4.system("cls");//清屏函数
5.pos类似于conio中的gotoxy
实例
#include<stdio.h>
#include<windows.h>
void Pos(int x, int y)//设置光标位置,从哪⾥开始输出
{
COORD pos;//表⽰⼀个字符在控制台屏幕上的坐标,左上⾓(0,0)
HANDLE h0utput;
pos. X = x;
pos. Y = y;
h0utput = GetStdhandle(STD_OUTPUT_HANDLE);//GetStdhandle⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄(⽤来标识不同 SetConsoleCursorPosition(h0uput, pos);
}
6.句柄的理解
所谓句柄实际上是⼀个数据,是⼀个Long (整长型)的数据。
句柄是WONDOWS⽤来标识被应⽤程序所建⽴或使⽤的对象的唯⼀整数,WINDOWS使⽤各种各样的句柄标识诸如应⽤程序实例,窗⼝,
控制,位图,GDI对象等等。WINDOWS句柄有点象C语⾔中的⽂件句柄。
从上⾯的定义中的我们可以看到,句柄是⼀个标识符,是拿来标识对象或者项⽬的,它就象我们的姓名⼀样,每个⼈都会有⼀个,不同的⼈
的姓名不⼀样,但是,也可能有⼀个名字和你⼀样的⼈。从数据类型上来看它只是⼀个16位的⽆符号整数。应⽤程序⼏乎总是通过饔靡桓
鯳INDOWS函数来获得⼀个句柄,之后其他的WINDOWS函数就可以使⽤该句柄,以引⽤相应的对象。
system的头文件如果想更透彻⼀点地认识句柄,我可以告诉⼤家,句柄是⼀种指向指针的指针。我们知道,所谓指针是⼀种内存地址。应⽤程序启动后,组
成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的⾸地址,那么就可以随时⽤这个地址访问对象。但
是,如果您真的这样认为,那么您就⼤错特错了。我们知道,Windows是⼀个以虚拟内存为基础的操作系统。在这种系统环境
下,Windows内存管理器经常在内存中来回移动对象,依此来满⾜各种应⽤程序的内存需要。对象被移动意味着它的地址变化了。如果地
址总是如此变化,我们该到哪⾥去该对象呢?
为了解决这个问题,Windows操作系统为各应⽤程序腾出⼀些内存储地址,⽤来专门登记各应⽤对象在内存中的地址变化,⽽这个地址(存
储单元的位置)本⾝是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象告知这个句柄地址来保存。这样我们只
需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时
(Unload)⼜释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象
本质:WINDOWS程序中并不是⽤物理地址来标识⼀个内存块,⽂件,任务或动态装⼊模块的,相反的,WINDOWS API给这些项⽬分配
确定的句柄,并将句柄返回给应⽤程序,然后通过句柄来进⾏操作。
但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,⽽且绝⼤多数情况的确不⼀样的。假如我
们把进⼊电影院看电影看成是⼀个应⽤程序的启动运⾏,那么系统给应⽤程序分配的句柄总是不⼀样,这和每次电影院售给我们的门票总是
不同的⼀个座位是⼀样的道理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论