2010-04-04 2 views
2

나는 전경, 즉 최소화되지 않은 창에 속한 hWnd에 대해 FindWindowEx 또는 EnumChildWindows을 호출하면 어떤 자식도보고하지 않는다는 것을 알아 챘습니다. 반면에 내가 먼저 쿼리하는 창에 대해 SetForegroundWindow을 호출하고 그 후에 FindWindowEx 또는 EnumChildWindows을 호출하면 모든 자식을보고합니다. 다음 호출은 내가 관심있는 창이 전경에 있지 않더라도 모든 자식을보고합니다. 첫 번째 호출 후 거의 일종의 캐싱을 수행합니까?FindWindowEx/EnumChildWindows를 처음 호출 한 후 컨트롤 트리가 캐시됩니까?

답변

0

이 응용 프로그램은이 응용 프로그램의 창입니까, 아니면 타사 응용 프로그램이 수행하는 작업을 조사하고 있습니까?

응용 프로그램이 처음으로 포어 그라운드로 가져올 때만 해당 자식 창을 만드는 것으로 추측합니다. 이것은 당신이보고있는 행동을 설명 할 것입니다. 내 지식으로는 EnumChildWindows은 캐싱을 수행하지 않습니다.

+0

다른 응용 프로그램입니다. EnumChildWindows가 자식을보고하기 위해서는 대상 창이 전경에 있어야합니다. 처음에는 최소한입니다. 창에서 EnumChildWindows를 호출하기 전에 자식 창을 만들었습니다. 모든 창을 볼 수는 있지만, 포 그라운드에없는 경우에는 자식이 거의없는 것입니다. –

+0

@Ion : 질문에서 말했듯이, EnumChildWindows를 호출 할 때 창을 최소화했다면, 어떻게 하위 창을 이미 만들었는지 확인할 수 있습니까? 또는이 동작은 윈도우가 보이지 않거나 (즉 최소화되지 않은 상태) 전경이 아닌 경우에도 발생합니까? –

+0

윈도우가 보이지만 전경이 아닌 경우에도 맞습니다. –

관련 문제