2009-07-28 13 views
5

sto lavorando in MFC e che sto cercando di catturare un bmp del desktop. Sto usando GetDC (NULL) per farlo, ma sembra che ignori le finestre con speciali skin. Sembra ignorare le finestre disegnate con UpdateLayeredWindow. Questo comportamento sembra accadere solo su Vista x64 e XP. Ho anche provato GetWindowDC con il desktop HWND ma il risultato è lo stesso.Screen capture ignora alcune finestre

NOTE: 1) Stampa Screen Works. 2) Su Vista se abilito Aero le catture di schermo sono ok, appaiono finestre "speciali". Quindi su Vista succede solo quando Aero è disabilitato.

un idee?

Grazie.

+0

per me ha ancora video cattura –

+0

Interessante ... Vuol premendo Print Screen eseguire la stessa? – sharptooth

+0

@Umair Ahmed: Penso che Print Screen per sé non cattura video –

risposta

6

Quando si chiama BitBlt(), aggiungere il flag CAPTUREBLT di "catturare" finestre sovrapposte

+0

Grazie. Questo ha funzionato. – Nemok

+1

IMO questo tipo di conoscenza oscura è esattamente ciò che questo sito tratta. Grazie (anche se probabilmente non lo userò mai :)) – Roel

+0

È interessante notare che se includo 'CAPTUREBLT', allora non ottengo i frame delle finestre, solo l'area client. Sembra un catch-22. –

1

Questo potrebbe essere a causa della composizione del desktop. Disattiva la composizione desktop Aero in Vista e riprova.

+0

Aero è spento, anche XP non ce l'ha ... Potrei essere possibile che questo problema venga visualizzato quando Aero è spento. Testerà con Aero. – Nemok

+0

Effettuato alcuni test e sembra che disabilitando Aero in Vista le finestre "speciali" non vengano visualizzate. Con esso abilitare lo fanno. In XP non esiste un'opzione Aero da abilitare in modo che il problema si verifichi ogni volta. Qualche idea? – Nemok