Bonjour,
J'aimerais savoir comment faire pour imprimer une vue (et non un fichier image bmp).
Julien.
Version imprimable
Bonjour,
J'aimerais savoir comment faire pour imprimer une vue (et non un fichier image bmp).
Julien.
une CFormView ne s'imprime pas ,sauf � utiliser l'impression par un bitmap de la form comme dans la faq (c'est une dialog, mais c'est pareil):
http://c.developpez.com/faq/vc/?page...PrintDialgoBox
si c'est une CView, si tu sais la dessiner tu sais l'imprimer :
http://c.developpez.com/faq/vc/?page...HowToPrintView
C'est une view que je veux imprimer : je la dessine bien avec OnDraw mais lorsque j'utilise la fonction "imprimer" par d�faut, Visual C++ m'imprime la view en tout petit et je la voudrais en plein �cran.
En parcourant le forum et la faq, j'ai essay� de modifier les fonctions OnFilePrint et OnBeginPrinting et de rajouter cela
mais �a ne marche pasCode:
1
2
3 pInfo->m_rectDraw.SetRect(0, 0, pDC->GetDeviceCaps(HORZRES), pDC->GetDeviceCaps(VERTRES));
ton mapmode est bien MM_TEXT ?
je n'avais pas mis le SetMapMode � MM_TEXT, j'ai donc rajout�
dans OnDraw mais �a ne change rienCode:pDC->SetMapMode(MM_TEXT);
alors si tout est ok ,tu dois te planter dans ton dessin.
celui-ci ne tient pas compte de la surface disponible...
sans voir le code on ne peut rien dire de plus.
Pour tenir compte de la surface disponible, j'utilise GetClientRect et ensuite je dessine en utilisant lpRect
c'est bien �a qu'il faut faire ?Code:
1
2
3
4
5
6 CRect lpRect; this->GetClientRect(lpRect); // exemple de tracé dans le dessin pDC->MoveTo(2*lpRect.right/5,0); pDC->LineTo(2*lpRect.right/5,18);
Que vient faire "lp" dans le nom ? :roll:
lpRect c'est le nom de l'objet de type CRect, j'aurais pu l'appeler julienRect ou medinocRect ...
Sauf qu'en programmation sous Windows, la convention utilis�e dit que "lp" signifie "long pointer" (m�me si en 32bits, tous les pointeurs sont "longs")...
Donc, tu peux appeler �a julienRect si tu veux, mais pas lpRect ou pRect...
c'est bien ce que je disais, GetClientRect donne la surface de la fenetre client, pas la surface d'impression de l'imprimante...
il faudra distinguer le cas du dessin � l'ecran et celui de l'edition....
:D
d'accord, et comment peut-on modifier la surface de l'impression de l'imprimante en faisant en sorte qu'elle coincide avec la surface de la fen�tre client ?
non �a ne marche pas comme �a;
c'est toi qui doit adapter ton dessin en fonction de la surface d'impression...
:D
Dans ce cas, il faudrait agrandir �norm�ment la taille de mon dessin et �a ne tiendra pas sur mon petit �cran 15 pouces : il faudra utiliser des barres de d�filement => CScrollView, or moi j'aimerais que mon dessin tienne enti�rement sur mon �cran, dans la fen�tre client ...
peux-tu me donner davantage de d�tails, je ne vois pas comment faire.