Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3924 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] StartDoc / EndDoc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] StartDoc / EndDoc

n°190923
godbout
Génial.
Posté le 06-08-2002 à 17:28:56  profilanswer
 

:hello:
 
J'ai un plantage lors de l'appel de EndDoc et je sais pas d'ou ca vient.
J'ai le droit a un :

First-chance exception in Program.exe (NTDLL.DLL): 0xC0000008: Invalid Handle


 
Voici mon code
 

Code :
  1. if (LOWORD(wParam) == IDC_PRINT)
  2.  {
  3.   char bufReport[20000] = {0};
  4.   GetDlgItemText(hDlg, IDC_REPORT, bufReport, 19999);
  5.   CPrintDialog printDlg(false);
  6.   CDC pd;
  7.   DOCINFO di;
  8.   if (printDlg.DoModal() == IDCANCEL)
  9.    return true;
  10.   pd.Attach(printDlg.GetPrinterDC());
  11.   pd.m_bPrinting = true;
  12.   memset(&di, 0, sizeof(DOCINFO));
  13.   di.cbSize = sizeof(DOCINFO);
  14.   di.lpszDocName = "EANCOM order report";
  15.   di.lpszOutput = (LPTSTR) NULL;
  16.   di.lpszDatatype = (LPTSTR) NULL;
  17.   di.fwType = 0;
  18.   pd.StartDoc(&di);
  19.   pd.StartPage();
  20.   pd.EndPage();
  21.   pd.EndDoc();
  22.   //EndDialog(hDlg, true);
  23.   return (true);
  24.  }
  25.  break;


---------------
Super.
mood
Publicité
Posté le 06-08-2002 à 17:28:56  profilanswer
 

n°190996
Harkonnen
Un modo pour les bannir tous
Posté le 06-08-2002 à 19:49:25  profilanswer
 

tu devrais tester si StartPage ne te renvoie pas une valeur négative. car on ne sait pas si la page a réussi à commencer ou pas !
 

Code :
  1. (snip)
  2. if (pd.StartPage() < 0) {
  3.    MessageBox ("Initialisation de la page impossible" );
  4.    pd.AbortDoc();
  5. } else {
  6.    pd.EndPage();
  7.    pd.EndDoc();
  8. }


c'est beaucoup plus propre... et tu pourras mieux cerner l'erreur !


---------------
J'ai un string dans l'array (Paris Hilton)
n°191148
godbout
Génial.
Posté le 06-08-2002 à 23:49:21  profilanswer
 

Il me semble que ca renvoie bien un nombre positif. Je te tiens au courant demain merci.


---------------
Super.
n°191267
godbout
Génial.
Posté le 07-08-2002 à 09:01:14  profilanswer
 

C'est en fait le StartDoc qui renvoie -1, c'etait pourtant pas complique a tester le retour, qu'est ce que je suis con :sarcastic:
 
Par contre je sais pas encore pkoi il me renvoie -1.
 
edit: The RPC server is unavailable.


Message édité par godbout le 07-08-2002 à 09:06:33

---------------
Super.
n°191268
El_gringo
Posté le 07-08-2002 à 09:03:41  profilanswer
 

heu... le port de sortie à NULL, t sûr que c normal ? (di.lpszOutput )

n°191270
godbout
Génial.
Posté le 07-08-2002 à 09:08:02  profilanswer
 

Ben ce qui est bizarre c'est que si je teste pas ca imprime, mais ca plante au moment du EndDoc :heink:
Donc le di.lpszOutput = NULL je sais pas si ca change grand chose dans mon cas ? :??:
J'ai jete un oeil sur codeguru et codeproject et il me semble que c'est pareil.


---------------
Super.
n°191271
godbout
Génial.
Posté le 07-08-2002 à 09:09:44  profilanswer
 

Citation :

lpszOutput  
Pointer to a null-terminated string that specifies the name of an output file. If this pointer is NULL, the output will be sent to the device identified by the device context handle that was passed to the StartDoc function.


 
J'suis pas sur que ca change grand chose mais bon, j'essaye.


Message édité par godbout le 07-08-2002 à 09:09:52

---------------
Super.
n°191272
El_gringo
Posté le 07-08-2002 à 09:10:36  profilanswer
 

...en éspérant que t sous NT : fait un GetLastError après ton StartDoc qui rend -1, ça te donnera une précision sur la source de l'erreur.
Si t pas sous NT c pas la peine, ça te rendre pas le bon message.

n°191273
godbout
Génial.
Posté le 07-08-2002 à 09:11:58  profilanswer
 

j'avais edite tout a l'heure pour le message d'erreur ;)
 
Sinon euh ben avec un output ca marche (:??:) mais ca plante toujours au EndDoc.


---------------
Super.
n°191275
El_gringo
Posté le 07-08-2002 à 09:15:07  profilanswer
 

Godbout a écrit a écrit :

j'avais edite tout a l'heure pour le message d'erreur ;)
 
Sinon euh ben avec un output ca marche (:??:) mais ca plante toujours au EndDoc.




 
Non, mais l'output en fait, tu le récupère dans ton CDC, par le CPrintDialog...
Cherche ce que c'est que ce serveur RPC !

mood
Publicité
Posté le 07-08-2002 à 09:15:07  profilanswer
 

n°191279
godbout
Génial.
Posté le 07-08-2002 à 09:17:22  profilanswer
 

El_Gringo a écrit a écrit :

 
 
Non, mais l'output en fait, tu le récupère dans ton CDC, par le CPrintDialog...
Cherche ce que c'est que ce serveur RPC !




J'suis en train de chercher.
Dans tous les codes que j'ai choppé personne ne mentionne l'output, bizarre ca :/


---------------
Super.
n°191292
godbout
Génial.
Posté le 07-08-2002 à 09:41:49  profilanswer
 

Bon en fait l'histoire du retour negatif de StartDoc c'est arrangé, je sais pas comment :D
Par contre, toujours le plantage a EndDoc.


---------------
Super.
n°191313
godbout
Génial.
Posté le 07-08-2002 à 10:17:01  profilanswer
 

Bon ben ca marche mais je comprends toujours pas.
En fait quand je balance l'exe depuis Visual, plantage sur EndDoc. Par contre quand je lance l'exe hors visual, ca print bien, pas de pb, pas de first exception.
 
edit: peut etre que je bloque le processus trop longtemps ? :??:


Message édité par godbout le 07-08-2002 à 10:19:56

---------------
Super.
n°191416
Harkonnen
Un modo pour les bannir tous
Posté le 07-08-2002 à 12:42:35  profilanswer
 

:heink:


---------------
J'ai un string dans l'array (Paris Hilton)
n°191442
godbout
Génial.
Posté le 07-08-2002 à 13:32:21  profilanswer
 

Harkonnen a écrit a écrit :

 :heink:  




t'inquiete pas c'est la meme chose pour moi hein.
Quand je passe au debug j'ai le droit a un invalide handle lorsque je close, quand je fais tourner normalement ca passe, et ca imprime...


---------------
Super.
n°191465
El_gringo
Posté le 07-08-2002 à 14:07:24  profilanswer
 

Godbout a écrit a écrit :

 
t'inquiete pas c'est la meme chose pour moi hein.
Quand je passe au debug j'ai le droit a un invalide handle lorsque je close, quand je fais tourner normalement ca passe, et ca imprime...




 
ça empêche pas qu'y a surement un truc pas bien saint qui se passe !

n°191469
godbout
Génial.
Posté le 07-08-2002 à 14:15:08  profilanswer
 

El_Gringo a écrit a écrit :

 
 
ça empêche pas qu'y a surement un truc pas bien saint qui se passe !




C'est une habitude avec moi :D
Le pb c'est que j'ai pas l'impression de faire de conneries. [:spamafote]


---------------
Super.
n°191524
Carbon_14
Posté le 07-08-2002 à 15:26:26  profilanswer
 

Genre "fuite de mémoire" qui n'est visible que dans un certain contexte. Y a pas d'accès de mémoire avec débordement qq part avant ? Un tableau de n cases avec écriture dans la n + 1 ième ?  
 
Ca m'est déja arrivé (étourderie :ange:) => bug pas clair...
 
C'est peut-être une finesse autre ...

n°191530
godbout
Génial.
Posté le 07-08-2002 à 15:35:57  profilanswer
 

Je trouve pas :(
J'ai bien un tableau de 20 000 caracteres mais il est pas depasse ( :D ).
En fait pendant le debug, quand ca plante, j'ai le choix de continuer ou non, et si je continue il plante pas le prog.  
Je capte rien :D


---------------
Super.
n°191611
Carbon_14
Posté le 07-08-2002 à 16:38:27  profilanswer
 

Je parlais plutôt d'un accès avant l'appel de Print. C'est pas obligatoirement de cet ordre.
 
Ce qui est des fois rageant est de mettre des MessageBox() pour capturer l'endroit où ça va pas, et que ça aille avec, mais bug quand elles n'y sont pas :fou: !!
 
Y a pas un mode Pas à Pas ou avec pnts d'arrêt ? Si un Handle est Invalide, porqué valide lors du RUN ? Mystère..

n°191622
godbout
Génial.
Posté le 07-08-2002 à 16:47:29  profilanswer
 

carbon_14 a écrit a écrit :

Je parlais plutôt d'un accès avant l'appel de Print. C'est pas obligatoirement de cet ordre.




Vi j'avais bien compris.
 

carbon_14 a écrit a écrit :

 
Ce qui est des fois rageant est de mettre des MessageBox() pour capturer l'endroit où ça va pas, et que ça aille avec, mais bug quand elles n'y sont pas :fou: !!




:D
 

carbon_14 a écrit a écrit :

 
Y a pas un mode Pas à Pas ou avec pnts d'arrêt ? Si un Handle est Invalide, porqué valide lors du RUN ? Mystère..




Ben justement en mode pas a pas il plante (je vois toujours pas pkoi :??:).


---------------
Super.
n°191624
godbout
Génial.
Posté le 07-08-2002 à 16:47:52  profilanswer
 

Je vais quand meme pas faire des screenshots pas a pas bordel :D


---------------
Super.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] StartDoc / EndDoc

 

Sujets relatifs
Plus de sujets relatifs à : [C++] StartDoc / EndDoc


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)