Problema di disegno ShowWindow (HWND, SW_HIDE) invalida automaticamente i rettangoli?

StackOverflow https://stackoverflow.com/questions/2639901

  •  27-09-2019
  •  | 
  •  

Domanda

Sto riscontrando un problema in cui ho una finestra che contiene una finestra per bambini. La finestra del bambino contiene un'altra finestra per bambini in cui un video sta riproducendo utilizzando Windows Media Player. Ogni volta che chiamo Showwindow (HWND, SW_HIDE) sulla finestra del genitore e dipinge su tutta la superficie, la regione occupata dalla finestra del Grand-Child (dove si stava riproducendo il video) non è invasa. Ho usato Spy ++ e ho scoperto che quella regione che non era sovrascritta era impostata prima della riverniciatura.

Ho monitorato l'HWND della finestra del Grand-Child e non sembrava ricevere alcun messaggio WM_ERASEBKGND o WM_NCPaint. Questo significa che l'area che ha occupato non era stata invalidata e quindi non poteva essere disegnata? Sono nuovo a Winforms.

Grazie!

È stato utile?

Soluzione

Molto poco chiaro, devo supporre che quando nascondi la finestra genitore non sarà visibile nulla. Una cosa che potrebbe essere pertinente è che il video viene sempre visualizzato in un overlay hardware. Questa è una caratteristica dell'adattatore video, può sovrapporre diversi pezzi di memoria video per produrre un'immagine composita. Di conseguenza, se nascondi quella finestra del video, il genitore di quella finestra non riceverà un messaggio ridipinto perché in realtà non era sovrapposto.

Usa il metodo invalidate () per costringere Windows a ridipingere se stessi. Evita P/invocando ShowWindow () Se puoi, la proprietà visibile è sempre una buona alternativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top