begin process at 2012 05 27 19:59:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Imprimante

 > IMPRESSION D'UN EDITBOX EN PLUSIEURS PAGES

IMPRESSION D'UN EDITBOX EN PLUSIEURS PAGES


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Imprimante Niveau :Initié Date de création :28/09/2003 Vu :7 857

Auteur : cbestern

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

J'ai rajouté à ce code (récupéré sur ce site) une petite partie qui permet surtout de faire une fonction simple d'impression d'un editbox.

Le + important: Il est capable de remplacé les '\n' par des saut à la lignes et changer de pages toutes les 65 lignes affiché.

Biensur il est modifiable façilement pour pouvoir imprimer n'importe quel char* voir n'importe quel fichier façilement.


Source

  • void ImprimeEditBox()
  • {
  • char *LeText = NULL;
  • LeText = new char[(GetWindowTextLength(EditHandle) + 2)];
  • int TextLen;
  • // TextLen = GetWindowTextLength(EditHandle);
  • TextLen = GetWindowText(EditHandle, LeText, (GetWindowTextLength(EditHandle) + 1));
  • // MessageBox (NULL, , "IMPRIMANTE", MB_OK);
  • MessageBox (NULL, LeText, "IMPRIMANTE", MB_OK);
  • PRINTDLG pd;
  • DOCINFO di;
  • char* szMessage;
  • memset (&pd, 0, sizeof(PRINTDLG));
  • memset (&di, 0, sizeof(DOCINFO));
  • di.cbSize = sizeof(DOCINFO);
  • di.lpszDocName = "Test";
  • pd.lStructSize = sizeof(PRINTDLG);
  • pd.Flags = PD_PAGENUMS | PD_RETURNDC;
  • pd.nFromPage = 1;
  • pd.nToPage = 1;
  • pd.nMinPage = 1;
  • pd.nMaxPage = 1;
  • szMessage = 0;
  • if (PrintDlg (&pd))
  • {
  • if (pd.hDC)
  • {
  • if (StartDoc (pd.hDC, &di) != SP_ERROR)
  • {
  • // Va contenir le texte du EditBox
  • char *LeText = NULL;
  • // Va contenir le nombres de caractères dans le EditBox
  • int TextLen = 0;
  • // Récupère le nombres de caractères dans le EditBox
  • TextLen = GetWindowTextLength(EditHandle);
  • // S'il n'est pas vide
  • if (TextLen)
  • {
  • // Alloue de la mémoire pour stocker le texte
  • LeText = new char[(TextLen + 2)];
  • // Récupère le texte
  • TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
  • char LignePrint[100];
  • // int i =0;
  • int Index1 = 0;
  • int Index2 = 2;
  • int Exit = 0;
  • if (TextLen > 0)
  • {
  • for (int i=0;i < TextLen;i++)
  • {
  • LignePrint[Index1] = LeText[i];
  • if (LeText[i] == '\n')
  • {
  • Index2 ++;
  • LignePrint[Index1] = '\0';
  • TextOut (pd.hDC,100, Index2*100, LignePrint, strlen(LignePrint));
  • Index1 = 0;
  • }
  • else Index1 ++;
  • if (Index2 == 60)
  • {
  • EndPage (pd.hDC);
  • EndDoc (pd.hDC);
  • StartDoc (pd.hDC, &di);
  • Index2 = 2;
  • }
  • }/**/
  • Index2 ++;
  • LignePrint[Index1] = '\0';
  • TextOut (pd.hDC,100, Index2*100, LignePrint, strlen(LignePrint));
  • EndPage (pd.hDC);
  • EndDoc (pd.hDC);
  • szMessage = "IMPRESSION OK";
  • }
  • else MessageBox (NULL, "Ne peut pas imprimer du vide", "IMPRIMANTE", MB_OK);
  • }
  • }
  • else
  • {
  • szMessage = "ERREUR Type 1";
  • }
  • }
  • else
  • {
  • szMessage = "ERREUR Type 2.";
  • }
  • }
  • else
  • {
  • szMessage = "Impression annulé par l'utilisateur";
  • }
  • if (szMessage)
  • {
  • MessageBox (NULL, szMessage, "IMPRIMANTE", MB_OK);
  • }
  • return;
  • }
void ImprimeEditBox()
{
    char *LeText = NULL;
    LeText = new char[(GetWindowTextLength(EditHandle) + 2)];
    int TextLen;
//    TextLen = GetWindowTextLength(EditHandle);
    TextLen = GetWindowText(EditHandle, LeText, (GetWindowTextLength(EditHandle) + 1));

//    MessageBox (NULL, , "IMPRIMANTE", MB_OK);
    MessageBox (NULL, LeText, "IMPRIMANTE", MB_OK);
	PRINTDLG	pd;
	DOCINFO		di;
	char*		szMessage;

	memset (&pd, 0, sizeof(PRINTDLG));
	memset (&di, 0, sizeof(DOCINFO));

	di.cbSize = sizeof(DOCINFO);
	di.lpszDocName = "Test";

	pd.lStructSize = sizeof(PRINTDLG);
	pd.Flags = PD_PAGENUMS | PD_RETURNDC;
	pd.nFromPage = 1;
	pd.nToPage = 1;
	pd.nMinPage = 1;
	pd.nMaxPage = 1;
	szMessage = 0;

	if (PrintDlg (&pd))
	{
		if (pd.hDC)
		{
			if (StartDoc (pd.hDC, &di) != SP_ERROR)
			{
              // Va contenir le texte du EditBox
              char *LeText = NULL;
              // Va contenir le nombres de caractères dans le EditBox
              int TextLen = 0;
              // Récupère le nombres de caractères dans le EditBox
              TextLen = GetWindowTextLength(EditHandle);
              // S'il n'est pas vide
              if (TextLen)
              {
                // Alloue de la mémoire pour stocker le texte
                LeText = new char[(TextLen + 2)];
                // Récupère le texte
                TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
                char LignePrint[100];
//                int i =0;
                int Index1 = 0;
                int Index2 = 2;
                int Exit = 0;
                if (TextLen > 0)
                {
                  for (int i=0;i < TextLen;i++)
                  {
                    LignePrint[Index1] =  LeText[i];
                    if (LeText[i] == '\n')
                    {
                      Index2 ++;
                      LignePrint[Index1] = '\0';
                      TextOut (pd.hDC,100, Index2*100, LignePrint, strlen(LignePrint));
                      Index1 = 0;
                    }
                    else Index1 ++;
                    if (Index2 == 60)
                    {
                  	   EndPage (pd.hDC);
                       EndDoc (pd.hDC);
                       StartDoc (pd.hDC, &di);
                       Index2 = 2;
                    }
                  }/**/
                  Index2 ++;
                  LignePrint[Index1] = '\0';
                  TextOut (pd.hDC,100, Index2*100, LignePrint, strlen(LignePrint));
               	  EndPage (pd.hDC);
                  EndDoc (pd.hDC);
                  szMessage = "IMPRESSION OK";
                }
                else MessageBox (NULL, "Ne peut pas imprimer du vide", "IMPRIMANTE", MB_OK);
              }
			}
			else
			{
				szMessage = "ERREUR Type 1";
			}
		}
		else
		{
			szMessage = "ERREUR Type 2.";
		}
	}
	else
	{
		szMessage = "Impression annulé par l'utilisateur";
	}
	if (szMessage)
	{
		MessageBox (NULL, szMessage, "IMPRIMANTE", MB_OK);
	}
	return;
}




 Sources du même auteur

PING SANS RAWSOCKET ET SANS MS-DOS (FONCTIONNE SOUS NT4 EN M...
Source avec Zip TENTATIVE DE DAMES CHINOISES SOUS DOS EN C++ AVEC SOURIS
Source avec Zip PETIT UTILITAIRE DE DESSINS SOUS DOS EN C++ AVEC SOURIS

 Sources de la même categorie

Source avec Zip IMPRIMER UN TIMAGE par eagleseyes
Source avec Zip IMPRESSION D'UN EDITBOX AVEC MISE EN PAGE (DEVC++) par gagah1
Source avec Zip IMPRIMER UN FICHIER par LordBob
Source avec Zip PROGRAMME SUR LES PILES ET LES FILES RELATIF A UNE KESTION P... par tagada_du_loft
COMMENT UTILISER LES NOMBREUSES POSSIBILITES DU PRINTF par JCDjcd

Commentaires et avis

Commentaire de max12 le 18/01/2004 17:37:22 administrateur CS

Très complet :)

Commentaire de magic_Nono le 01/12/2004 15:10:08

bon source => une bonne note
++
Bonne prog
Nono.

PS: pense à citer tes sources, ça mange pas de pain.
et ça peux faire plaisir aux auteurs respectifs

Commentaire de magic_Nono le 01/12/2004 15:15:50

intéressant :

la maniere simpliste de traiter les exceptions sans utiliser leurs lourds mécanismes

(ça va car on reste au sein de la mm fonction....)

Commentaire de magic_Nono le 01/12/2004 15:33:01

question:
tu gères bien les saut de page (\n)
mais qu'en est'il des sauts de tabulation ?

Commentaire de cbestern le 13/12/2004 06:31:25

je ne gère que les retours à la ligne, pas les tabulations.

Commentaire de Pindus le 18/03/2005 12:10:58

slu
je suis en 2e annee et le cours de Vc++ est en 3e annee du coup je connais le c++ mais pas Vc++

question:
est ce que je peux inserer ton code dans une IHM pour imprimer des courbes (images)?

Merci d'avance

Commentaire de cbestern le 19/03/2005 06:42:14

Non je pense que cela n'as rien a voir,  la je ne gère que l'impression de texte, pour une image il faut faire autrement.

Commentaire de Pindus le 21/03/2005 12:08:35

A ce moment la peux tu me dire ou et comment il faut que je modifie  le code?

merci de ton attention

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,733 sec (4)

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