Bonjour,
Dans une application de type WordPad, je tente de permettre à l'utilisateur de pouvoir régler le setup de l'imprimante et des pages.
Pour cela, je fais appel à la classe CPageSetupDialog.
Aussi quand l'utilisateur clic sur Fichier/Print Setup ....
je fais appel à la fonction suivante :
1- traitement des marges :
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 void CEditPvApp::OnFilePrintSetup() { // TODO: Add your command handler code here CPageSetupDialog psd( PSD_INHUNDREDTHSOFMILLIMETERS | PSD_MARGINS, AfxGetApp()->GetMainWnd()); // Initialize margins // margeTop à margeBottom : variables de la classe principale psd.m_psd.rtMargin.top = margeTop ; psd.m_psd.rtMargin.left = margeLeft ; psd.m_psd.rtMargin.right = margeRight ; psd.m_psd.rtMargin.bottom = margeBottom ; if( IDOK == psd.DoModal() ) { // Propagate changes to the app AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode); // mémorisation des marges saisies par l'utilisateur margeTop = psd.m_psd.rtMargin.top ; margeLeft = psd.m_psd.rtMargin.left ; margeRight = psd.m_psd.rtMargin.right ; margeBottom = psd.m_psd.rtMargin.bottom ; } else TRACE("CommDlgExtendedError returned error %d from CPageSetupDialog::DoModal().\n", (int)CommDlgExtendedError() ); }
Comme je le souhaitai, j'obtiens bien une boîte de dialogue me permettant de gérer les options telles que marges et orientation papier (+ imprimante bien sur).
Quand la fonction est finie et que je lance soit une impression soit une prévisualisation je me rend compte que les marges ne sont pas prises en compte... Mais par contre on tient bien compte de l'orientation choisie.
-> Auriez vous une idée sur le problème ?
2- mémorisation de l'orientation papier choisie par l'utilisateur
Autre disfonctionnement, quand je rentre dans cette boîte de dialogue c'est l'orientation portrait qui est choisie. Si je sélectionne l'orientation paysage pui que je sors et que je rerentre dans la boîte, c'est toujours l'orientation portrait qui est sélectionnée.
-> comment puis je initialiser la sélection sur la dernière orientation sélectionnée par l'utilisateur ?
(pour les marges, je mémorise leur valeur dans des variables de la classe puis j'initialise la boîte de dialogue avant de mettre DoModal. Je pensais faire de même mais je n'arrive pas à récupérer la variable qui me permettra de connaître le choix utilisateur.
Merci beaucoup de votre aide
Alice
Partager