Direct2D finestra nera non quando a fuoco
Domanda
Ho una finestra Direct2D che dipinge bene quando a fuoco; tuttavia, quando messa a fuoco si sposta in un'altra finestra (stessa applicazione o un altro), l'intera finestra va nero. Ho appuntato il basso problema per l'utilizzo del ID2D1HwndRenderTarget::Clear
. Questa funzione è fondamentale per la mia applicazione come senza di essa, la pittura diventa piuttosto ... strano.
C'è un modo finestra Direct2D una non-focalizzata in grado di dipingere come normale (nota: WM_PAINT
viene chiamato come al solito, come è Clear
, BeginPaint
, ecc tutti senza errori)
Grazie in anticipo.
Soluzione
Con la mia esperienza con DirectX, se i giri schermo indietro è perché DX ha perso il dispositivo è stato 'pittura' a. Questo succede molto - per esempio -. Quando si passa da una finestra DirectX intero schermo in un'altra applicazione, e viceversa
Quindi quello che devi fare è ri-inizializzare il dispositivo DX in modo che possa riprendere le operazioni di verniciatura.
Questo potrebbe fornire un ulteriore aiuto (non il mio sito web, ma una rapida ricerca su Google girato in su)
http://www.programmersheaven.com/2/FAQ -DIRECTX-Evitare-task-switching
Altri suggerimenti
Da MSDN,
Handling Device Loss
Mentre il programma è in esecuzione, la dispositivo grafico che si sta utilizzando potrebbe non essere più disponibile. Per esempio, il dispositivo può essere perso se il display risoluzione cambia, o se l'utente rimuove la scheda video. Se la dispositivo viene perso, il bersaglio rendering anche non è più valido, insieme a qualsiasi risorse del dispositivo-dipendente che erano associato al dispositivo. Direct2D segnala un dispositivo smarrito restituendo il il codice di errore D2DERR_RECREATE_TARGET da il metodo EndDraw. Se si riceve questo codice di errore, è necessario ricreare il bersaglio rendering e tutti dipendenti dal dispositivo risorse.
Si prega di controllare il link per maggiori informazioni. http://msdn.microsoft.com/en-us /library/ff684174(VS.85).aspx