Je rencontre un problème où, j'ai une fenêtre qui contient une fenêtre enfant. La fenêtre enfant contient une autre fenêtre enfant où une vidéo est en cours de lecture à l'aide de Windows Media Player. Chaque fois que j'appelle ShowWindow (hWnd, SW_HIDE) sur la fenêtre parent et que je peins sur toute la surface, la région occupée par la fenêtre grand-enfant (où la vidéo était en cours de lecture) n'est pas surchargée. J'ai utilisé spy ++ et j'ai trouvé que cette région qui n'était pas surchargée était cachée AVANT que la repeinte ne se produise.Problème de dessin ShowWindow (hWnd, SW_HIDE) invalide automatiquement les rectangles?
J'ai surveillé le hwnd de la fenêtre grand-enfant et il ne semblait pas recevoir de messages WM_EraseBKGND ou WM_NCPAINT. Cela signifie-t-il que la zone qu'elle occupe n'a pas été invalidée et qu'elle n'a donc pas pu être retirée? Je suis nouveau pour les winforms.
Merci! Très peu clair, je dois supposer que lorsque vous cachez la fenêtre parente alors rien ne sera visible.
La fenêtre vidéo utilise probablement une technologie telle que DirectX qui contourne l'API Windows habituelle pour les mises à jour d'écran. Malheureusement, je ne sais pas comment vous aider - je m'attendrais à ce que la fenêtre de l'enfant détecte qu'elle était cachée et désactive automatiquement le petit-fils. –
Après une enquête, je crois que DirectX est le problème, j'ai désactivé la composition du bureau (j'utilise Vista) et ce problème ne se produit pas. En outre, si je cache la fenêtre pendant la lecture de la vidéo (au lieu de l'arrêter et de la masquer), le problème ne se produit pas non plus. – wk1989
Le problème semble être avec le moteur de rendu vidéo EVR de Vista, la région qu'il occupe ne semble pas être peinte si la vidéo qui est en train de tourner est arrêtée. – wk1989