Désolé de te cibler comme ca FarScape mais comme tu connais dejà mon problème...
Récemment j'ai posté une news avec le sujet suivant :
OnPaint OnDraw CView

Ou mon problème etait de créer un CStatic dans une application SDI puis de pouvoir l'imprimer.
Le souci etait que mon CStatic se dessine tout seul alors que mon
application SDI attend que l'on dessine dans sa fonction OnDraw.
Apres discussions sur un newsgroup Microsoft, on m'a suggére l'idée un peu tordu de la chose suivante :

dans ma classe Cstatic je déclare une methode publique OnDraw qui est appelé par le OnPaint tel que montré ci dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
void CxStatic::OnPaint()
{
	OnDraw(NULL);
}
 
void CxStatic::OnDraw(CDC* pDC)
{
	CPaintDC	dc(this); // device context for painting
	CDC*		pMyDC = NULL;
 
	if (pDC == NULL)
		pMyDC = &dc;
	else
		pMyDC = pDC;
 
...
}
Ensuite dans ma classe derivé de CView je fais la chose suivante :

void CTestView::OnDraw(CDC* pDC)
{
m_pCxStatic->OnDraw(pDC);
}


Et c'est incroyable mais ca marche, lorsque je fais aperçu avant impression je vois bien mes CxStatic mais ils sont mal positionnés car ils se retrouvent tous en haut a gauche de ma vue (0,0).
Saurais tu me dire pourquoi et comment remédier au problème

Merci