c ++ - Hvordan ved, hvornår EnumWindows afslutter sin fortegnelse over Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan man vide, hvornår EnumWindows afslutter sin fortegnelse over Windows? Fordi EnumWindows modtager en tilbagekaldsfunktion som parameter, og det fortsætter med at kalde det, indtil der ikke er flere vinduer, der skal noteres.

Bedste reference


EnumWindows() blokke, mens opgørelsen finder sted. Når EnumWindows() afslutter opregning gennem vinduerne, vender den tilbage en BOOL.


Følgende kodestykke:


#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
", i, hwnd, title);
    return TRUE;
}

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


giver mig en udgang som denne:


Starting EnumWindows()
Window #1 (<hwnd>): <title>
Window #2 (<hwnd>): <title>
Window #3 (<hwnd>): <title>
<and so on...>
EnumWindows() ended


EnumWindows() opregner helt sikkert en synkron måde.