[MFC] mise en page d'une impression
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 :
Code:
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() );
} |
1- traitement des marges :
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
[MFC] - re impression et setup
pour la 2nd partie de mon problème :
j'ai réussi à récupérer la valeur de l'orientation du papier par :
Code:
1 2
|
psd.GetDevMode()->dmOrientation |
sachant que dmOrientation peut prendre soit la valeur DMORIENT_PORTRAIT soit la valeur DMORIENT_LANDSCAPE
maintenant je recherche comment initialiser la boîte de setup avec une orientation papier soit portrait soit paysage et non pas par défaut portrait.
Voilà si d'ici la prochaine vous auriez des infos à me soumettre je suis preneuse !!!
Merci
Alice