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

MFC Discussion :

[VC++.Net] Imprime le formulaire en cours


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut [VC++.Net] Imprime le formulaire en cours
    Bonjour tout le monde,
    Sous VC++.net et avec les winforms
    Est-ce qu'il est possible d'imprimer le formulaire en cours?
    Merci d'avance de m'aider.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu veux parler d'une hardcopy de la fenetre ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut
    Citation Envoyé par nico-pyright(c)
    tu veux parler d'une hardcopy de la fenetre ?
    Je veux parler d'une fonction qui capture l'image du formulaire en cours
    puis imprime l'image.
    Merci!!

  4. #4
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut
    [FONT=Courier New]J'ai le code en VB et je n'ai pas pu le traduire.[/FONT]
    [FONT=Courier New][/FONT]
    [FONT=Courier New]La routine CaptureScreen capture l'image du formulaire en cours et la met dans memoryImage. puis memoryImage est passé dans l'objet graphique e qui est imprimé.[/FONT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _   hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _   Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _   hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _   ByVal dwRop As System.Int32) As LongDim memoryImage As BitmapPrivate Sub CaptureScreen()   Dim mygraphics As Graphics = Me.CreateGraphics()   Dim s As Size = Me.Size   memoryImage = New Bitmap(s.Width, s.Height, mygraphics)   Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)   Dim dc1 As IntPtr = mygraphics.GetHdc   Dim dc2 As IntPtr = memoryGraphics.GetHdc   BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _      Me.ClientRectangle.Height, dc1, 0, 0, 13369376)   mygraphics.ReleaseHdc(dc1)   memoryGraphics.ReleaseHdc(dc2)End SubPrivate Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _   ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _   PrintDocument1.PrintPage   e.Graphics.DrawImage(memoryImage, 0, 0)End SubPrivate Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _   System.EventArgs) Handles PrintButton.Click   CaptureScreen()   PrintDocument1.Print()End Sub

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 43
    Par défaut
    Citation Envoyé par aziziti
    J'ai le code en VB et je n'ai pas pu le traduire.
    La routine CaptureScreen capture l'image du formulaire en cours et la met dans memoryImage. puis memoryImage est passé dans l'objet graphique e qui est imprimé.
    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
    Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _   hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _   
    Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _   hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _   ByVal dwRop As System.Int32) As Long
    Dim memoryImage As BitmapPrivate Sub CaptureScreen()   
    Dim mygraphics As Graphics = Me.CreateGraphics()   
    Dim s As Size = Me.Size   
    memoryImage = New Bitmap(s.Width, s.Height, mygraphics)   
    Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)   Dim dc1 As IntPtr = mygraphics.GetHdc   
    Dim dc2 As IntPtr = memoryGraphics.GetHdc   
    BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _      Me.ClientRectangle.Height, dc1, 0, 0, 13369376)   
    mygraphics.ReleaseHdc(dc1)   
    memoryGraphics.ReleaseHdc(dc2)
    End SubPrivate 
    Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _   
    ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _   PrintDocument1.PrintPage   
    e.Graphics.DrawImage(memoryImage, 0, 0)
    End SubPrivate 
    Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _   System.EventArgs) Handles PrintButton.Click   
    CaptureScreen()   
    PrintDocument1.Print()End Sub

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    pourquoi tu ne te sers pas plutot de ce qui est fait dans la faq VC++ ? http://c.developpez.com/faq/vc/?page...PrintDialgoBox

Discussions similaires

  1. Imprimer le Formulaire en cours via un Etat
    Par PhRey dans le forum IHM
    Réponses: 11
    Dernier message: 06/12/2006, 16h31
  2. Réponses: 2
    Dernier message: 25/09/2006, 14h03
  3. [VB.NET] Imprimer un formulaire, A l'AIDE
    Par AzertyH dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/04/2006, 11h52
  4. Réponses: 10
    Dernier message: 05/03/2006, 11h51
  5. imprimer le contenu du formulaire en cours
    Par jmsamson dans le forum Access
    Réponses: 2
    Dernier message: 30/10/2005, 00h24

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