2009-07-28 13 views
5

Pracuję w MFC i próbuję przechwycić bmp na pulpicie. Używam GetDC (NULL), aby to zrobić, ale wydaje się, że ignoruje specjalne skórki windows. Wygląda na to, że ignoruje okna rysowane za pomocą UpdateLayeredWindow. Takie zachowanie zdaje się występować tylko w systemie Vista x64 i XP. Próbowałem również GetWindowDC z HWND pulpitu, ale wynik jest taki sam.Zrzut ekranu ignoruje niektóre okna

UWAGI: 1) Ekran działa. 2) W systemie Vista, jeśli włączę Aero, przechwytywania ekranu są w porządku, pojawiają się okna "specjalne". Tak więc w Vista dzieje się to tylko wtedy, gdy Aero jest wyłączone.

Pomysły?

Dziękuję.

+0

dla mnie nie zrobił wideo przechwytywania –

+0

Ciekawe ... Czy naciśnięciu Print Screen wykonać takie same? – sharptooth

+0

@Umair Ahmed: Myślę, że sam ekran nie przechwytuje filmów –

Odpowiedz

6

Dzwoniąc BitBlt(), dodać flagę CAPTUREBLT do „przechwytywania” warstwowe okna

+0

Dziękuję. To zadziałało. – Nemok

+1

IMO tego rodzaju niejasna wiedza jest dokładnie tym, o czym jest ta strona. Dzięki (nawet jeśli prawdopodobnie nigdy go nie użyję :)) – Roel

+0

Co ciekawe, jeśli dodaję "CAPTUREBLT", to nie dostaję ramek okiennych, tylko obszar klienta. Wydaje się, że złapie-22. –

1

Może to być spowodowane kompozycją pulpitu. Wyłącz kompozycję pulpitu Aero w systemie Vista i spróbuj ponownie.

+0

Aero jest wyłączone, również XP go nie ma ... Może się zdarzyć, że ten problem pojawi się, gdy Aero jest wyłączone. Testuję z Aero na. – Nemok

+0

Rzeczywiście zrobiłem kilka testów i wydaje się, że po wyłączeniu Aero w Vista nie pojawiają się "specjalne" okna. Dzięki niemu mogą to zrobić. W XP nie ma opcji Aero do włączenia, więc problem występuje za każdym razem. Jakieś pomysły? – Nemok