5
EnumWindows가 창 목록을 언제 끝내는 지 어떻게 알 수 있습니까? EnumWindows는 매개 변수로 콜백 함수를받으며 더 이상 나열 할 창이 없을 때까지 계속 호출합니다. 열거가 발생하는 동안EnumWindows가 창 목록을 언제 끝내는 지 어떻게 알 수 있습니까?
EnumWindows가 창 목록을 언제 끝내는 지 어떻게 알 수 있습니까? EnumWindows는 매개 변수로 콜백 함수를받으며 더 이상 나열 할 창이 없을 때까지 계속 호출합니다. 열거가 발생하는 동안EnumWindows가 창 목록을 언제 끝내는 지 어떻게 알 수 있습니까?
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;
}
나에게이 같은 출력을 제공가 :
Starting EnumWindows() Window #1 (<hwnd>): <title> Window #2 (<hwnd>): <title> Window #3 (<hwnd>): <title> <and so on...> EnumWindows() ended
그래서 EnumWindows()
확실히 동기 방식으로 열거합니다.
내가 테스트 한대로, 약 1 -> 2 초 후에 만 블록이 나타나지 않고 창 목록이 완전히 나열되어 있습니다. 다른 생각은 없습니까? – jondinham
@Paul : 실수가 있어야합니다. EnumWindows()를 사용하는 코드를 게시 할 수 있습니까? 또한 테스트를 거쳤으며 창을 통해 열거 된 후에 만 차단되고 반환됩니다. –
내 실수를 다시 확인했습니다. 그것은 차단합니다. :) – jondinham