2009-07-02 4 views

Répondre

1

Quels arguments passez-vous au constructeur CPrintDialog? Le constructeur est déclaré comme

CPrintDialog(BOOL bPrintSetupOnly, 
    DWORD dwFlags = PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_NOPAGENUMS| 
        PD_HIDEPRINTTOFILE|PD_NOSELECTION, 
    CWnd* pParentWnd = NULL); 

donc si vous ne donnez pas de valeur pour l'argument « dwFlags », vous obtiendrez ces drapeaux par défaut. Les indicateurs par défaut incluent PD_NOPAGENUMS, de sorte que les contrôles de sélection de page seront désactivés. Vous devez également définir le nombre maximal de pages pour que les contrôles de sélection de page fonctionnent. Essayez de modifier votre code à quelque chose comme

CPrintDialog dlg(FALSE, 
    PD_ALLPAGES|PD_USEDEVMODECOPIES|PD_HIDEPRINTTOFILE|PD_NOSELECTION); 
dlg.m_pd.nMaxPage = 100; 
dlg.DoModal(); 
+0

Pas de chance. Avez-vous essayé cela sur un projet de test. Ne semble pas fonctionner même sur une version Release. Dites-moi si cela marche pour vous. Je suppose qu'il y a une façon particulière de gérer la sélection de la gamme, je me souviens d'avoir lu quelque part (je ne me souviens pas). Btw, mon projet n'est pas basé sur doc/view et est seulement une application basée sur un dialogue. Serait-ce la raison? apprécie beaucoup ton aide. –

+0

Je n'ai pas vraiment testé, désolé à ce sujet. Maintenant que je l'ai, je peux voir que vous devez également définir le nombre maximal de pages pour les contrôles à activer: J'ai modifié ma réponse ci-dessus pour refléter cela, et cela fonctionne au moins pour moi. Le problème n'est pas lié au fait que vous n'utilisez pas DocView - le CPrintDialog lui-même n'est qu'un léger wrapper autour de la boîte de dialogue d'impression native de Windows. En fait, faire des impressions sans DocView peut être un peu plus compliqué, mais c'est un problème différent ... – DavidK

0

Votre code d'impression définit-il le nombre de pages à imprimer? Je n'ai pas de code à portée de main mais je pense que c'est dans OnPreparePrintDC() ou quelque chose comme ça, où vous définissez m_MaxPage ou un membre de l'objet que vous obtenez en tant qu'argument.

Questions connexes