IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

PrintDlgEx (custom print dialog)


Sujet :

Visual C++

  1. #1
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut PrintDlgEx (custom print dialog)
    Bonjour, je désire faire un application qui imprime avec une fenêtre modifiée disponible dans les resources. J'ai réussi à en faire avec PrintDlg, mais je n'y arrive pas avec PrintDlgEx. Il est important pour le look d'utiliser PrintDlgEx .

    Je n'ai trouvé aucun exemple qui utlise lpPrintTemplateName lpCallback, et hInstance. Dans tout les exemples, c'est valeur sont NULL

    Voici mon code:
    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
    35
    36
    37
    38
    39
    40
        BOOL bResult = FALSE;
        LPPRINTDLGEXW ptPrt = NULL;
        LPPRINTPAGERANGE ptPageRanges = NULL;
     
        ptPrt = calloc(1, sizeof(PRINTDLGEXW));
        ptPageRanges = calloc(10, sizeof(PRINTPAGERANGE));
     
        ptPrt->lStructSize    = sizeof(PRINTDLGEXW);
        ptPrt->hwndOwner      = gtPPMreportHWnd;
        ptPrt->hDevMode       = NULL;
        ptPrt->hDevNames      = NULL;
        ptPrt->hDC            = NULL;
        //ptPrt->Flags          = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC | 
        //                        PD_ENABLEPRINTTEMPLATE | PD_NOPAGENUMS;;
        ptPrt->Flags          = PD_RETURNDC | PD_COLLATE | PD_ENABLEPRINTTEMPLATE | PD_ENABLEPRINTTEMPLATEHANDLE;
     
        ptPrt->Flags2         = 0;
        ptPrt->ExclusionFlags = 0;
        ptPrt->nPageRanges    = 0;
        ptPrt->nMaxPageRanges = 10;
        ptPrt->lpPageRanges   = ptPageRanges;
        ptPrt->nMinPage       = 1;
        ptPrt->nMaxPage       = 1000;
        ptPrt->nCopies        = 1;
        ptPrt->hInstance      = gtAppHInst;
        ptPrt->lpCallback     = (IUnknown*)PrintDlgProc;
        ptPrt->nPropertyPages = 0;
        ptPrt->lphPropertyPages = NULL;
        ptPrt->nStartPage     = START_PAGE_GENERAL;
        ptPrt->dwResultAction = 0;
        ptPrt->lpPrintTemplateName = (LPWSTR)MAKEINTRESOURCEW(IDR_PRNTDLG);
        bResult = !PrintDlgExW((LPPRINTDLGEXW)ptPrt);
        *phPrtDC = ptPrt->hDC;
     
        if(ptPrt!=NULL)
            free(ptPrt);
        if(ptPageRanges!=NULL)
            free(ptPageRanges);
     
        return bResult;
    Exemple (sans fenêtre custom):
    http://msdn.microsoft.com/library/de...ialogboxes.asp

    Merci

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Je ne comprend pas comment utiliser l'interface IPrintDialogCallback. On en parle sur :
    http://msdn.microsoft.com/library/de...pertySheet.asp

    Mais il n'y a pas d'exemple.

    Présentement ma fonction de callback à l'air de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IPrintDialogCallback* PrintDlg(HWND, UINT, WPARAM, LPARAM, LRESULT *);
    Mais, j'ai aucune idée si c'est bon?

    Si quelqu'un a une idée...

  3. #3
    Membre du Club Avatar de masterx_goldman
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 51
    Points
    51
    Par défaut
    Salut,
    Après presque 4 ans de votre question, je veux faire presque la même chose que vous, créer une fenêtre personnalisée pour l'impression et remplacer celle de windows par défaut,
    pouvez vous m'éclaircir comment faire ...

    Merci

Discussions similaires

  1. Print Dialog utilisation?
    Par jojo86 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 02/07/2021, 09h28
  2. Afficher le print dialog natif sous linux
    Par _skip dans le forum Documents
    Réponses: 0
    Dernier message: 25/02/2011, 12h12
  3. custom print dialog
    Par waspy59 dans le forum C#
    Réponses: 0
    Dernier message: 26/01/2010, 16h22
  4. Réponses: 1
    Dernier message: 13/01/2010, 17h54
  5. Customisation Du Print Dialog: propriétés de l'imprimante
    Par ronanogor dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 07/10/2008, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo