Hello,

J'ai h�sit� � post� ici ou sur le forum algorithmie mais comme c'est quand m�me au sujet des MFC.. J'ai une question assez bizarre j'esp�re que vous la comprendrez.

Je suis en train d'apprendre les MFC avec le bouquin Visual C++ de Ivor Horton. Je fais donc un logiciel de dessin qui est comme exemple dans le bouquin. J'en suis � l'impression du document et je dois faire mes evenements pour imprimer sur plusieurs pages. Sauf que je ne comprends vraiment pas (c'est la 1�re fois que ca m'arrive , ou alors je suis vraiment endormi ??) leurs formules.

Voici le dessin associ�:


et le code de l'�venement OnPrint:
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Imprime une page du document
void CSketcherView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
	CPrintData* pPrintData = static_cast<CPrintData*>(pInfo->m_lpUserData);
 
	// Sortie du nom de fichier du document
	pDC->SetTextAlign(TA_CENTER);		// Centre le texte suivant
	pDC->TextOut(pInfo->m_rectDraw.right/2, -20, pPrintData->m_DocTitle);
 
	// Justifie le texte à gauche
	pDC->SetTextAlign(TA_LEFT);
 
	// Calcule l'origine de la page en cours
	int xOrg = pPrintData->m_DocRefPoint.x +
                  600 * ((pInfo->m_nCurPage - 1)%
                      (pPrintData->m_nWidths));
	int yOrg = pPrintData->m_DocRefPoint.y -
                  900 * ((pInfo->m_nCurPage - 1)/
                      (pPrintData->m_nWidths));
 
	// Calcule le décalage par rapport à la zone de dessin centrale comme valeur positive
	int xOffset = (pInfo->m_rectDraw.right - 600) / 2;
	int yOffset = -(pInfo->m_rectDraw.bottom + 900) / 2;
 
	// Remplace l'orgine de la fenêtre par celle de page en cours et enregistre l'ancienne origine
	CPoint OldOrg = pDC->SetWindowOrg(xOrg - xOffset, yOrg + yOffset);
 
	// Définit un rectangle de découpage de la taille de la zone imprimée
	pDC->IntersectClipRect(xOrg, yOrg, xOrg + 600, yOrg - 900);
 
	OnDraw(pDC);				// Dessine le document entier
	pDC->SelectClipRgn(NULL);	// Supprime le rectangle de découpage
	pDC->SetWindowOrg(OldOrg);	// Restaure l'ancienne origine de la fenêtre
}
Pourquoi pour trouver xOrg ils font un modulo avec le nombre de page-1 et pour yOrg une division?? J'ai copi� comme suis le code mais �a me tracasse le pourquoi du comment...

J'esp�re ne pas avoir �t� trop long merci d'avance! 8)