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:
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...
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 }![]()
J'esp�re ne pas avoir �t� trop long merci d'avance! 8)
Partager