begin process at 2010 03 22 04:40:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

mercredi 4 juin 2008 à 15:06:19 | Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

globule

Bonjour,

J'ai trouvé le code suivant pour imprimer un RTF
J'ai maintenant besoin de donner la possibilité à l'utilisateur de choisir l'imprimante pour que cela affecte ma fonction " PrintRTF", mais que ca ne change pas l'imprimante par défaut de Windows.

Public Sub PrintRTF(RTF As RichTextBox, LeftMarginWidth As Long, _
   TopMarginHeight, RightMarginWidth, BottomMarginHeight)
   Dim LeftOffset As Long, TopOffset As Long
   Dim LeftMargin As Long, TopMargin As Long
   Dim RightMargin As Long, BottomMargin As Long
   Dim fr As FormatRange
   Dim rcDrawTo As Rect
   Dim rcPage As Rect
   Dim TextLength As Long
   Dim NextCharPosition As Long
   Dim r As Long


   ' Start a print job to get a valid Printer.hDC
   Printer.Print Space(1)
   Printer.ScaleMode = vbTwips

   ' Get the offsett to the printable area on the page in twips
   LeftOffset = Printer.ScaleX(GetDeviceCaps(Printer.hdc, _
      PHYSICALOFFSETX), vbPixels, vbTwips)
   TopOffset = Printer.ScaleY(GetDeviceCaps(Printer.hdc, _
      PHYSICALOFFSETY), vbPixels, vbTwips)

   ' Calculate the Left, Top, Right, and Bottom margins
   LeftMargin = LeftMarginWidth - LeftOffset
   TopMargin = TopMarginHeight - TopOffset
   RightMargin = (Printer.Width - RightMarginWidth) - LeftOffset
   BottomMargin = (Printer.Height - BottomMarginHeight) - TopOffset

   ' Set printable area rect
   rcPage.Left = 0
   rcPage.Top = 0
   rcPage.Right = Printer.ScaleWidth
   rcPage.Bottom = Printer.ScaleHeight

   ' Set rect in which to print (relative to printable area)
   rcDrawTo.Left = LeftMargin
   rcDrawTo.Top = TopMargin
   rcDrawTo.Right = RightMargin
   rcDrawTo.Bottom = BottomMargin

   ' Set up the print instructions
   fr.hdc = Printer.hdc   ' Use the same DC for measuring and rendering
   fr.hdcTarget = Printer.hdc  ' Point at printer hDC
   fr.rc = rcDrawTo            ' Indicate the area on page to draw to
   fr.rcPage = rcPage          ' Indicate entire size of page
   fr.chrg.cpMin = 0           ' Indicate start of text through
   fr.chrg.cpMax = -1          ' end of the text

   ' Get length of text in RTF
   TextLength = Len(RTF.Text)

   ' Loop printing each page until done
   Do
      ' Print the page by sending EM_FORMATRANGE message
      NextCharPosition = SendMessage(RTF.hWnd, EM_FORMATRANGE, True, fr)
      If NextCharPosition >= TextLength Then Exit Do  'If done then exit
      fr.chrg.cpMin = NextCharPosition ' Starting position for next page
      Printer.NewPage                  ' Move on to next page
      Printer.Print Space(1) ' Re-initialize hDC
      fr.hdc = Printer.hdc
      fr.hdcTarget = Printer.hdc
   Loop

   ' Commit the print job
   Printer.EndDoc

   ' Allow the RTF to free up memory
   r = SendMessage(RTF.hWnd, EM_FORMATRANGE, False, ByVal CLng(0))
End Sub


J'ai essayé avec
CommonDialog1.PrinterDefault = False
Mais cela n'a aucune incidence sur l'impression suivante

mercredi 4 juin 2008 à 15:18:57 | Re : Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

NHenry

Membre Club
Bonjour

Tu as unbe collection "Printers" qui liste les imprimante installées.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
mercredi 4 juin 2008 à 15:26:11 | Re : Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

globule

Merci, mais je voudrais passer par un commonDialog,. Quel est l'interet d'un tel composant si on ne peux pas recuperer les valeurs de retour ?

Je reponse donc ma question
Comment recuperer l'imprimante selectionnée par dans un commonDialog
mercredi 4 juin 2008 à 15:40:56 | Re : Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

NHenry

Membre Club
Bonjour

Les valeurs résultantes sont disponibles dans les propriétés du CommonDialog.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
mercredi 4 juin 2008 à 18:58:16 | Re : Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

globule

Non, aucune valeur ne donne le nom de l'imprimante sélectionnée par l'utilisateur (il y a de nombreux messages sur les forums à propos de cette aberration)

jeudi 5 juin 2008 à 09:31:22 | Re : Chosir l'imprimante pour l'impression en cours SANS changer l'imprimante par défaut dans Windows

NHenry

Membre Club
Bonjour

Peut être pas le nom, mais le HdC (si mes souvenirs sont bons).

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site


Cette discussion est classée dans : long, to, hdc, printer, fr


Répondre à ce message

Sujets en rapport avec ce message

StretchBlt et objet Printer [ par electroremy ] Bonjour,je suis en train de terminer la version III de CiDess.je programme en VB5 SP3J'ai rencontré pas mal de déboirres pour dessiner et imprimer du HDC [ par angsthase ] Qu'est ce que le type de donnée HDC et à quoi sert -il ??? Extrait du petzold : HDC hdc ;<span sty HDC [ par angsthase ] Salut à tous! J'aide besoin d'aide pour comprendre ce qu'est le type de données HDC. Le petzold n'a rien pu faire pour moi, voici ce qu'il dit : Probleme presque resolu, à votre bon coeur [ par Angus59 ] Bonjour à tous,Il y a quelques jours j'ai posté un message pour un probleme de Permissions NTFS mais je n'ai pas eu de reponses.La j'ai trouvé une API prise en compte paramétre imprimante sous word [ par mathbou73 ] Bonjour,je me permets de poster ce message après plusieurs journées de recherche sur le web et sur vbfrance entre autres. Voila mon souci, je souhaite AccessViolationException [ par capo666 ] salut j'ai un gros problème incompréhensible. j'ai trouvé un bon module sur planet-source pour écrire et lire la mémoire. il marche très très bien en probleme avec api [ par eyeofcobra ] salut à tous et à toutes j'ai essayé ce code pour faire un zoom sur une image sur excel mais j'ai toujours un soucis avec une ligne du programme et j' StretchBlt [ par epson1 ] Bonjours à tous ,J'ai un probleme que je n'arrive pas à résoudre .Voici un code :Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, B GetFolder ??? répertoire par defaut autre que poste de travail [ par TOOCOOL ] Salut,j'utilise la fonction GetFolder (trouvée sur VBFrance) pour sélectionner via une boite de dialogue un répertoire.le probleme c est qu elle est p Est'il possible d'accelerer ce code ? [ par ATitus ] BonjourVoila ce code ci dessous permet sur excel de faire une recherche de combinaisons sur une plage de données .1) on choisi la plage soit par exemp


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales