requester d'impression(nombre de page, numero debut fin)

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

requester d'impression(nombre de page, numero debut fin)

Message par Ulix »

Boujours a tous.
J'ai besoin d'un peu d'aide.
Y a t-il quelqu'un qui peut me fournir un exemple d'utilisation d'une boite de dialogue d'impression (choix nombre de page, numero de page, paysage, portrait, etc..
Soyez sympas, si possible en français, (j'ai des difficulté avec l'anglais et alors en allemand ...)
Je n'ai rien trouver sur les archives (codeFR) !
N'y a t-il pas une requester imprimante qui est était dévellopé ?
Quel bonne idée !
merci d'avance ! :idea:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

La solution n'est pas aussi simple

Voici un bout de code pour débuter

Ce code ouvre la boîte de dialogue système pour l'impression.

Beaucoup de cas sont possibles, par exempe si le driver ne supporte pas l'impression de plusieurs copies, la valeur du nombre de copies n'est pas retournée dans la même variable ni d'ailleurs dans la même structure.

Il faut lire la doc MS pour adapter au besoin.

Code : Tout sélectionner

Structure PRINTDLGA
  lStructSize.l
  hwndOwner.l
  hDevMode.l
  hDevNames.l
  hDC.l
  Flags.l
  nFromPage.w
  nToPage.w
  nMinPage.w
  nMaxPage.w
  nCopies.w
  hInstance.l
  lCustData.l
 *lpfnPrintHook.l
 *lpfnSetupHook.l
 *lpPrintTemplateName.b
 *lpSetupTemplateName.b
  hPrintTemplate.l
  hSetupTemplate.l
EndStructure

Structure PRINTDLGW
  lStructSize.l
  hwndOwner.l
  hDevMode.l
  hDevNames.l
  hDC.l
  Flags.l
  nFromPage.w
  nToPage.w
  nMinPage.w
  nMaxPage.w
  nCopies.w
  hInstance.l
  lCustData.l
 *lpfnPrintHook.l
 *lpfnSetupHook.l
 *lpPrintTemplateName.w
 *lpSetupTemplateName.w
  hPrintTemplate.l
  hSetupTemplate.l
EndStructure

Enumeration 
   #Fenetre_Principale
   #Bouton
EndEnumeration

If OpenWindow(#Fenetre_Principale, 0, 0, 600, 400, #PB_Window_WindowCentered|#PB_Window_SystemMenu, "Essai page impression")
   If CreateGadgetList(WindowID())
      If ButtonGadget(#Bouton, 50, 50, 120, 40, "Imprimer") 
      EndIf  

    ; ici il faut remplir un certain nombre de valeur
     lppd.PRINTDLGA\lStructSize = SizeOf(PRINTDLGA)  ; la taille de la structure
     lppd\hwndOwner = WindowID(#Fenetre_Principale)  ; la fenêtre propriétaire de la boîte de dialogue

     ; le paramètre hDevMode permet d'initialiser la boite avec des valeurs
     ; doit être à 0 si pas utilisé
     lppd\hwndOwner = 0

     ; le paramètre hDevNames permet d'initialiser le nom du driver, le nom de l'imprimante et
     ; le nom du port d'impression
     ; si on initialise pas avec cette variable, MS utilsie les valeurs du Win.ini. Dans ce cas ce membre doit 
     ; être à 0. Au retour (d'après la doc, cette variable contient le handle du bloc mémoire alloué
     ; pour la structure  DEVMODE utilisée par défaut)
     lppd\hDevNames = 0

     ; si les 2 valeurs lppd\hwndOwner et lppd\hDevNames valent 0, la boîte de dialogue est initialisée
     ; avec l'imprimante par défaut courante.
     
     
  

      Repeat 
         Select WaitWindowEvent()
            Case #PB_EventGadget
                  Select EventGadgetID()
                       Case #Bouton
                          PrintDlg_(@lppd.PRINTDLGA)
                   EndSelect 
               
            Case #PB_EventCloseWindow 
                  quitter + 1
        EndSelect 
   
      Until quitter 
  endif 
EndIf
Dernière modification par Anonyme2 le ven. 11/févr./2005 15:01, modifié 1 fois.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Imprimante requester

Message par Ulix »

Merci pour le code.

Au point ou j'en suis toute sugestion est la bien venue ! :D

J'ai réussi a intégré (PrintDialog et PageSetupDialog) avec 2 structures pour faire le transfert, dans une DLL. Cela est suffisant pour mon programme.
Toutefois je recherche encore du code pour par exemple détermine le nombre et le nom des imprimantes présentes.. etc

En tout cas, merci pour toute l'aide reçu ! :wink:
Répondre