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 / Exemple :
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;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.