pb de rafraichissement d'interface mdi

pb de rafraichissement d'interface mdi - C++ - Programmation

Marsh Posté le 29-04-2004 à 09:56:46    

boujour tout le monde,  
 
voila je suis en train de créé une interface graphique pour un logiciel de traitement d'images. Cette interface est une mdi.
 
Lorsque j'ouvre une image , celle-ci ne s'afficha pas dans la childform, mais s'affiche lorsque je change la taille de celle-ci.
 
j'utilise une clase Cimage qui gere l'affiche de l'image
 

Code :
  1. void CImageAnalyzerView::OnDraw(CDC* pDC)
  2. {
  3. CImageAnalyzerDoc* pDoc = GetDocument();
  4. ASSERT_VALID(pDoc);
  5. // TODO: add draw code for native data here
  6. if(!pDoc->m_img.IsValid())
  7.  return;
  8. /*if(n_mTailleImageV != pDoc->m_Image.GetHeight())
  9. {
  10.  n_mTailleImageV = pDoc->m_Image.GetHeight();
  11.  SCROLLINFO si;
  12.  si.fMask = SIF_RANGE;
  13.  si.nMin = 0;
  14.  si.nMax = pDoc->m_Image.GetHeight();
  15.  SetScrollInfo(SB_VERT, &si, TRUE);
  16. }
  17. if(n_mTailleImageH != pDoc->m_Image.GetWidth())
  18. {
  19.  n_mTailleImageH = pDoc->m_Image.GetWidth();
  20.  SCROLLINFO si;
  21.  si.fMask = SIF_RANGE;
  22.  si.nMin = 0;
  23.  si.nMax = pDoc->m_Image.GetWidth();
  24.  SetScrollInfo(SB_HORZ, &si, TRUE);
  25. }*/
  26. DWORD dwFlags = DIB_DRAW_SETPALETTE;
  27. if(pDoc->m_transparence)
  28.  dwFlags |= DIB_DRAW_TRANSPARENT;
  29. pDoc->m_img.Draw(pDC, CRect(0,0,0,0), dwFlags);
  30. }


 
quelqu'un a deja rencontré ce genre de probleme ?


Message édité par vince_223 le 29-04-2004 à 10:01:02
Reply

Marsh Posté le 29-04-2004 à 09:56:46   

Reply

Marsh Posté le 29-04-2004 à 10:00:34    

faite un Invalidate aprés le Draw.

Reply

Marsh Posté le 29-04-2004 à 10:06:34    

Non ca c pas possible
 
un Invalidate dans une fonction OnDraw ca fait une boucle infinie !!!  :pt1cable:  :pt1cable:


Message édité par vince_223 le 29-04-2004 à 10:07:41
Reply

Marsh Posté le 29-04-2004 à 13:15:03    

hmm ... oups :p j'avais po vu :(
mais tu as peut etre une methode show ou dispose qui effectue un flush de l'affichage non ??

Reply

Marsh Posté le 29-04-2004 à 14:02:14    

en fait le prob est résolue, le probleme venait de la méthoded'ouverture de document : j'utilisais les evenement du style  
 
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)  
 
alors que pour gerer automatiquement l'affichage, il faut utiliser la methode  
 
OnOpenDocument(LPCTSTR lpszPathName) qui creer une nouvelle childform et l'affiche)


Message édité par vince_223 le 29-04-2004 à 14:14:04
Reply

Marsh Posté le 29-04-2004 à 14:03:42    

par contre si quelqu'un peut me dire si il existe un moyen et comment le mettre en oeuvre pour redimensionner une fenetre en fonction de sa zone cliente ou alors faut calculer la taille des bords etc ...
 
 
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed