2016-07-04 109 views
7

MSDN dice (Extended Window Styles):Quando deve essere utilizzato WS_EX_NOREDIRECTIONBITMAP?

WS_EX_NOREDIRECTIONBITMAP: La finestra non rende ad una superficie di reindirizzamento. Questo è per Windows che non hanno contenuto visibile o che usano meccanismi diversi dalle superfici per fornire il loro aspetto.

Cosa significa in questo caso "finestra di rendering su una superficie di reindirizzamento" rispetto a "meccanismi diversi da superfici"? Quali di questi: GDI, D3D9, D3D11, D3D12 contano come il primo rispetto al secondo? Dovrei usare questo stile di finestra estesa quando sto disegnando usando Direct3D?

+3

È un'ottimizzazione per impedire la creazione del buffer posteriore. Quello che DWM (aka Aero) usa per comporre le finestre dell'interfaccia utente sullo schermo. Sicuramente non appropriato per GDI, sicuramente per DirectComposition, forse per DirectX. Sempre facile capire quando non dovresti usarlo, l'area client del tuo winodw sarà invisibile o funzioni come miniature live e Aero Peek non funzionano. –

+2

[Kenny Kerr] (http://stackoverflow.com/users/500701/kenny-kerr) spiega brevemente lo stile della finestra nel suo articolo [Windows con C++: Layering delle finestre ad alte prestazioni utilizzando il motore di composizione di Windows] (https : //msdn.microsoft.com/magazine/dn745861.aspx). – IInspectable

risposta

2

DirectComposition è l'api principale che è possibile utilizzare per disegnare una finestra senza bitmap di reindirizzamento. Anche DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL su swapchains senza DirectComposition potrebbe attivare questa modalità.

Una cosa di cui preoccuparsi quando si utilizza l'API è che non ci sarà necessariamente una finestra di sfondo opaco, così dwm può fare un sacco di lavoro extra miscelazione con cose dietro la finestra che non sono in realtà non visibile

+0

Non intendi "... con cose dietro la finestra che non sono ** effettivamente visibili **?" –