【发布时间】:2016-06-10 04:17:03
【问题描述】:
我正在尝试在我的 C++/Qt 应用程序中在 Windows 上实现全局热键。我使用了 RegisterHotKey,它非常有效,我可以看到按下组合会触发我的事件,但由于我不知道任何其他方式,我只是使用了一个循环,它现在阻止了我的窗口并阻止它出现。
您可以在下面找到我的代码。我如何听这个组合?肯定有其他方法。
void set_win32_keys(MainWindow *mwin) {
HWND main_hwnd = (HWND)mwin->winId();
RegisterHotKey(main_hwnd, 2, MOD_CONTROL | MOD_SHIFT, 0x32 /*2 key*/);
MSG *msg;
msg = new MSG();
BOOL b_ret;
while ((b_ret = GetMessage(msg, main_hwnd, 0, 0)) != 0) {
if (b_ret == -1) {
qDebug() << "Error";
} else {
if (msg->message == WM_HOTKEY) {
mwin->new_screenshot();
qDebug() << msg;
}
}
}
}
【问题讨论】:
-
@kfsone 对不起,我编辑了我的问题