Как узнать, когда EnumWindows заканчивает свой список окон? - PullRequest
5 голосов
/ 31 августа 2011

Как узнать, когда EnumWindows заканчивает свой список окон?Потому что EnumWindows получает функцию обратного вызова в качестве параметра и продолжает вызывать ее до тех пор, пока в списке не останется больше окон.

1 Ответ

10 голосов
/ 31 августа 2011

EnumWindows() блоков во время перечисления.Когда EnumWindows() заканчивает перечисление через окна, он возвращает BOOL.

Следующий фрагмент кода:

#include <windows.h>
#include <cstdio>

BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lparam)
{
    int& i = *(reinterpret_cast<int*>(lparam));
    ++i;
    char title[256];
    ::GetWindowText(hwnd, title, sizeof(title));
    ::printf("Window #%d (%x): %s\n", i, hwnd, title);
    return TRUE;
}

int main()
{
    int i = 0;
    ::printf("Starting EnumWindows()\n");
    ::EnumWindows(&MyEnumWindowsProc, reinterpret_cast<LPARAM>(&i));
    ::printf("EnumWindows() ended\n");
    return 0;
}

дает мне такой вывод:

Итак, EnumWindows() определенно перечисляет синхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...