Pb d'affichage

Résolu
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006 - 10 mai 2006 à 13:57
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006 - 10 mai 2006 à 14:58
Bonjour,

Je souhaite afficher des graphiques ds une boite de dialogue. Pour cela, j'utilise une libraire déja ecrite que j'ai trouvé sur le web cependant je n'arrive pas a reafficher le graphique avec la methode onpaint.

Apparemment le graphique s'affiche tres rapidement et il est ensuite éffacé ou remplacé par un écran vide.
Je ne vois pas d'ou vient le problème, voici ma méthode OnPaint():

void CDlgAreva::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(&rect);

if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);


// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);


int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;


// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
// CDialog::OnPaint();

if(myBar != NULL)
{
CWnd* graphFrame = (CWnd*)GetDlgItem(IDC_GRAPH);
CDC* pDC = graphFrame->GetDC();
myBar->Draw(pDC);
ReleaseDC(pDC);
}
}
}

myBar est le nom de mon graphique et sa methode Draw prend en argument un CDC*.
IDC_GRAPH est une frame ds ma bdd principale que j'ai mis en Rectangle pour afficher le graphique a l'intérieur.

Merci d'avance pour votre aide.

2 réponses

mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006
10 mai 2006 à 14:58
Finalement j'ai trouve, c'etait pas bien compliqué il fallait juste le savoir:
J'ai créé un CPaintDC en utilisant le pointeur de mon CWnd et plus de problème.

Mais bon je ne sais toujours pas pourquoi ca ne marchait pas avec le CDC puisque apparemment cette méthode marche pour les applications de type SDI mais ds mon cas c'etait une bdd.

Bonne journée
3
mrous Messages postés 29 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 28 juillet 2006
10 mai 2006 à 14:39
En continuant de chercher, j'ai constaté que si je modifie la fonction draw pour prendre un CPaintDC comme paramtres, la réactualisatiion s'effectue bien. Cependant le graphique n'est plus dans ma frame comme je le souhaitais (ce qui est normal).

Ma question est donc comment faire pour modifier le CDC de mon rectangle en CPaintDC?
Ou comment faire pour ontenir le meme resultat avec un CDC qu'un CPaintDC?

Merci
0
Rejoignez-nous