我试图用C ++学习和实验abit这是它到目前为止的样子:
int main() {
std::vector<std::string> lines = {
"Fancy Centered Text!",
};
if (GetAsyncKeyState(VK_F1) & 1)
{
cout << "LOL";
if (GetAsyncKeyState(VK_SPACE))
{
Sleep(100);
keybd_event(0x50, 0, 0, 0);
Sleep(100);
keybd_event(0x50, 0, KEYEVENTF_KEYUP, 0);
}
}
int num_cols = 75;
// VIRTUAL BORDER
std::cout << std::endl;
for (int i = 0; i < num_cols; ++i) std::cout << ' ';
std::cout << ' ' << std::endl;
// OUTPUT
for (int i = 0; i < lines.size(); ++i) {
centerify_output(lines[i], num_cols);
std::cout << std::endl;
}
// VIRTUAL BORDER
std::cout << std::endl;
for (int i = 0; i < num_cols; ++i) std::cout << ' ';
std::cout << ' ' << std::endl;
}
所以问题是当用户按下F1并左键单击时,它会按下一次键(在这种情况下,Q为例)。 它编译没有错误或问题,当我尝试按F1并左键单击时没有真正发生。
也许我太盲目,看不出什么错,任何帮助都会很棒!
答案 0 :(得分:1)
如果要在执行期间注册多个按键并处理它们,则需要在循环内运行GetAsyncKeyState以及所有函数。否则,程序只是在收到按键后完成执行,你需要一个循环跳回按键并再次接收/处理它。