2012-01-23 5 views
0

기본적으로는 this 코드에 해당합니다. 즉, 사용자가 실제로 업데이트를 볼 수있을 때 수행하려는 비싼 작업이 있습니다.Window가 표시되는 경우에만 작업 실행

이것은 단지 IsVisibleChanged 이벤트를 포착하는 것과 같지 않습니다. 이는 실제로는 창을 숨기고 다른 창이 덮고있는 경우에만 작동하기 때문입니다. 나는 한 결과와 유사하다으로 그 의해 괜찮아요, WPF에서 가장 관용적 솔루션을 찾고 있어요 - 또한

나는 문제 레이몬드 ++ C에서 작동하는 것과 같은 방식으로 해결 코드를 찾고 하지 해요 나를!

답변

1

더 많은 WPF 중심 답변을 원하지만 알고 싶은 것은 더 많은 시스템 수준 정보입니다. 창문이 보이지 않거나 다른 창에 의해 가려진 경우. 나는 Raymond의 아이디어가 유효하다고 생각하지만 Wpf가 WndProc을 숨기 때문에 Andrew Eichacker의 블로그 게시물 (Attaching to WndProc in WPF 설명)을 수행해야합니다. 링크가 제안한대로 WM_PAINT 메시지를 가로 챌 수 있어야합니다. 위의 링크에서

: 창문의 SourceInitialized 이벤트에서

, 당신의 윈도우의 핸들에서하여 HwndSource 개체 를 만듭니다. AddHook 메서드를 사용하여 제공된 함수를 사용하여 모든 창 이벤트에 이벤트 처리기를 연결합니다.

+0

그래, 문제를 피할 수 있다는 것을 알았지 만, 더 좋은 해결책이 될 수 있기를 바랐다. 이것은 가지고있는 유용한 추상화처럼 보인다. 아직도, "할 수 없다"는 대답이다. – Voo

0

Window.IsActive는 어떻게 사용합니까?

+0

활성 표시는 보이는 것과 동일하지 않습니다. 포커스가없는 동안에는 창을 볼 수 있습니다. – Voo

관련 문제