VC++,SDI, Redessiner le contenu (disparu après reduction fenetre) de la vue apre

cs_ninouch Messages postés 20 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 22 janvier 2005 - 21 janv. 2005 à 16:47
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 24 janv. 2005 à 08:59
J'ai un gros pb.

J'utilise la fonction OnDraw() de la classe View pour dessiner plusieurs bitmap selon les données
du document. Ca marche très bien, l'affichage se déroule parfaitement.

Le pb intervient quand je souhaite réduire la fenetre.
Une fois rétablie, mon écran est blanc (tout le contenu de la vue est disparue).
Comment puis-je faire pour que la vue que j'avais avant la reduction réapparaisse après
l'agrandissement.

Je pensais rappeler la fonction OnDraw() dans la fonction qui gère le réagrandissement mais je ne sais d'abord pas où elle se trouve et si je peux faire ca! Comment faire?

Merci

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
21 janv. 2005 à 17:39
Normalement, la fonction Ondraw est appelée automatiquement dès que la vue doit être rafraîchie.

As-tu le même problème si tu met une fenêtre devant la vue et que tu remet la vue au premier plan ?

Pour vérifier que OnDraw est bien appelée (il y a peut être un problème dans ton affichage des bitmaps, rajoute dans cette fonction) :
TRACE("coucou\n");

Démarre le prog en mode debug (F5). dans la fenêtre output du verra si OnDraw est bien appelée.
0
cs_ninouch Messages postés 20 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 22 janvier 2005
22 janv. 2005 à 02:39
Merci beaucoup, en fait, quand j'ai reassayé une nouvelle fois ca a marché. Je sais pas pourquoi.
Entre temps j'ai eteind mon ordi, alors etait-ce un bug passagé, je sais pas.

J'ai un autre problème plus grave cette fois. En fait le programme que j'ai fait est un projet dans
le cadre de mes etudes (L3 info) et je dois le rendre mardi. L'ennui c'est que j'ai essayé aujourd'hui
seulement de lancer l'executable sur un ordi ou visual C++ n'est pas installé et là c'est le drame!
Il me met le message suivant :
<DIR>
un fichier dll requis MFC42D.dll.n'a pas ete trouvé

Alors que sur mon ordi il n'y a aucun pb quand je lance seulement l'executable.

A l'aide, j'ai mis ma question sur le forum. Si tu as une idée sur le sujet, peux tu s'il te plait
y mettre ta suggestion. Merci encore

</DIR>
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 janv. 2005 à 08:59
Solution 1 :
compile en mode Release (là t'es en mode Debug) Build->SetActiveConfiguration. Ton prog sera dépendant de MFC42.dll (presque sur d'être sur toute les machines) et non plus de MFC42D.dll (seulement sur les systèmes avec un compilo et un débugger). Au pire fourni cette dll avec le prog release (qui sera moins gros d'ailleurs)


Solution2 :
compile toujours en mode release mais avec an plus une liaison statique pour les mfc (project settings, pour le mode release, onglet general, choisit "USE MFC in a static library). L'exe sera un peu plus gros mais là plus aucune dépendance aux MFC.
0
Rejoignez-nous