Comment savoir si une fenêtre MDI est partiellement visible ??? [MFC] - C++ - Programmation
Marsh Posté le 18-02-2003 à 11:39:08
Bon, je vois que le sujet n'intérresse personne ?
Pour simplifier, une application MDI est une application qui permet d'ouvrir plusieurs documents en même temps.
Le problème de mon application, c'est qu'elle est très gourmande en ressource et que plusieurs fenêtre sont affichées en même temps (environs 50-70), certaines sont visibles, d'autres non (soit parce qu'elles sont réduites, soit parce qu'elles sont cachées par d'autres fenêtres).
Actuellement, j'essai d'optimiser cette application en ne raffraîchissant que les vues qui sont visibles mais je ne sais pas comment faire et je n'ai rien trouvé dans la doc des MFC.
Petite remarque :
Je sais par contre que la méthode IsIconic() permet de savoir si la fenêtre est réduite et IsZoomed() permet de savoir si elle est agrandie.
Dans le cas où une fenêtre est agrandie, la question ne se pose pas, c'est la seul à raffraîchir.
Marsh Posté le 18-02-2003 à 13:00:16
Tu dois continuer à rafraîchir toutes les vues, mais par contre peut-être modifier le OnDraw de toutes tes vues. En effet, le CDC qui est passé en paramètre définit une région de clip qui correspond à la surface visible de ta vue.
Par contre, il semble que les fonctions de CDC prennent déjà en compte cette surface de clip. J'ai fait un petit test pour le voir :
Code :
|
Donc j'ai créé deux fenêtres MDI et j'ai obtenu ça dans mon Output de VC++ :
|
Donc, il semble que au moins pour le StretchBlt, la surface de clip soit prise en compte. Apparemment les autres fonctions ont l'air de la prendre en compte aussi, mais il faudrait faire des tests plus poussés (certaines semblaient ne prendre en compte que le rectangle entourant la région).
Après, c'est à toi de voir comment cela s'applique à ton programme.
Marsh Posté le 20-02-2003 à 10:57:18
Merci pour ton aide, mais ça ne marche pas chez moi
Je suis en train de faire un algo qui permet de trouver tous les espaces visibles (liste de rectangles) d'une fenêtre et ce n'est pas donné ...
Marsh Posté le 20-02-2003 à 16:35:20
Il serait intéressant de savoir sous quel OS tu est et quelle sont les fonctions que tu utilises dans ton OnDraw.
Dans mes tests, j'étais sous Windows 2000 et j'ai essentiellement utilisé la fonction StretchBlt.
Marsh Posté le 14-02-2003 à 15:16:11
Salut,
J'ai fais une petit outil MFC en utilisant les MDI et j'aimerais savoir s'il est possible d'avoir la liste de toutes les vues qui sont partiellement visibles (recouvert à moitier par une autre fenêtre)
Merci