如果有需要用easyX库写小游戏的朋友可以试试. 特点是把一个size_t作为一个长bool数组. 通过监视者模式检测按键行为
//Inputer.h #pragma once #include <map> #include <windows.h>//引入API函数GetAsyncKeyState() #include <initializer_list> class Inputer { public: Inputer(const std::initializer_list<char>&); ~Inputer() = default; bool get_keyboard(char c); bool empty() { return (keycmd == 0); } void updata(); private: size_t keycmd = 0;//缓冲区 std::map<char, size_t> key; }; //Inputer.cpp #include "Inputer.h" Inputer::Inputer(const std::initializer_list<char>&li)//构造函数,接受一个列表,列表里存储需要检测的按键(虚拟键值) { for (auto &a : li) { key.insert({ a,1UL << key.size() });//通过左移无符号值1,为每个需要检测的键生成唯一的位 } } bool Inputer::get_keyboard(char c) { return ((keycmd&key[c]) == 0) ? false : true;//值是否插入? } void Inputer::updata()//在每帧开始前调用 { keycmd = 0;//清空缓冲区 for (auto &a : key) { if (GetAsyncKeyState(a.first) & 0x8000) { keycmd |= a.second;//若API函数返回真,则将对应的值插入 } } }友情链接:easyX官网