我想用SetWinEventHook设置一些事件,然后等待。在五个事件之后,我想退出消息循环。问题是代码在没有进入循环的情况下就塞在了getMessage中。无论何时发生事件,都会正确调用回调函数。
HWINEVENTHOOK hEvent = SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, NULL,
WinEventProcCallback, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);
HWINEVENTHOOK hWinEventHook0 = SetWinEventHook(
EVENT_OBJECT_CREATE, EVENT_OBJECT_CREATE,
NULL, WinEventProcCallback, 0, 0,
WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);
HWINEVENTHOOK hWinEventHook1 = SetWinEventHook(
EVENT_OBJECT_DESTROY, EVENT_OBJECT_DESTROY,
NULL, WinEventProcCallback, 0, 0,
WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);
while (ret = GetMessage(&msg, NULL, 0, 0) > 0) {
if (ret == -1)
{
return;
}
if (cont >= 5) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
cont++;
std::cout << "Reached : " << cont << std::endl;
}我该如何解决这个问题呢?提前谢谢你
发布于 2016-08-10 16:33:45
if (ret = GetMessage(&msg, NULL, 0, 0) > 0)等于
if (ret = (GetMessage(&msg, NULL, 0, 0) > 0))发布于 2016-08-10 16:30:27
while (ret = GetMessage(&msg, NULL, 0, 0) > 0) {
if (ret == -1)
{
return;
}在这种情况下,if语句将不为真,因此您将无法获得返回值。ret不能同时大于0和-1
https://stackoverflow.com/questions/38867942
复制相似问题