有朋友问我,想实现多键盘事件同时处理,用什么函数?

我们知道,Windows系统是基于Win32 API的,它默认的提供消息处理机制为一个应用程序一个消息池,我们按键消息事件均在其中顺序放置, 而系统则会挨个对其进行处理,但它是一个一个轮流来处理的,而有的时候,我们需要象泡泡堂双人战一样,让系统同时处理两个消息事件, 例如,1Player按下A键时,1号人物向左走,而他没有释放按键,2Player按下←键时,我们依旧需要系统马上处理该事件,使2号人物移动。

此时我们需要自己创建一个消息缓冲机制。 大家都知道,一个需要的键被按下的时候,会触发一个类似keydown的事件,这时,你把这个键放到缓冲区中。这个缓冲区可以用整数数组来实现。 比如int key[10] 。其中,key[x]存放键的ASC码,数组的大小由需要同时输入的键的个数决定。在受到一个键被释放的事件时候,将这个键从缓冲区中清除 (设定值为0)。其间,用定时器定期扫描缓冲区,读取不为零的,这样,就能同时检测多个键盘输入。

但是问题又来了,我们对顶时器的时间间隔设置为多少合适,需要优化。我懒的去弄,有兴趣的朋友可以自己试试。