Probleme etrange Imprimante USB/programme GUI-GDI

Résolu
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008
-
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
un truc à devenir fou...
j'ai fait un petit jeu dans une fenetre windows (CreateWindowEx...), le truc banal
affichage en utilisant le GDI, les touches du clavier, etc...
une dialog box pour un "about", un icone dans le systray, lecture d'un fichier hiscore
et une deuxieme version avec un TaskBar Notifier et un debut de reseau
je plante le décor, car c'est vraiment etrange.
peu importe la version que j'utilise (avec/sans reseau, sans taskbar notifier, sans systray...)
(la version reseau n'envoi encore aucune donnée et ne se connecte pas au demarrage)

si je lance une impression sur mon imprimante usb, et que je lance mon programme, je me retrouve avec une "Erreur d'impression" qui apparait (sur l'icone systray du spooler) !!!!
c'est la premiere fois que ça me le fait, alors que c'est pas le premier programme (j'utilise toujours le meme startup, et aucun autre prog ne fait ça)

le programme etant assez gros, je ne peux pas le poster comme ça
si quelqu'un a une idée ou des pistes de recherche, je peux poster des morceaux
mais pour le moment, vraiment je ne comprend pas

merci d'avance car là, je sèche completement

6 réponses

Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

Je pense que tu as un problemes d'écriture aléatoire à la ram, ça n'a strictement rien à voir avec la taille de ton exe.
Tu utilises des fonctions d'impression dans ton programme ? Essais de me le décrire un peu plus

MuPuF, pour vous servir
http://programmeur.fou.free.fr
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

Oïe... je crois avoir compris le probleme de la sauvegarde ! vu sous un autre angle, je vois une erreur...glop...ça resquait pas de sauvegarder grand chose...


elle ne sauvegarde pas le contenu mais les adresses des variables...


satané chaines de caracteres et pointeurs!
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

Ah ben forcement, la référence vers un pointeur, c'est de trop

/*****************************
*** MuPuF®, pour vous servir ***

*** http://programmeur.fou.free.fr ***
*****************************/
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

ps: c'est apparu avec l'impression d'une image.
hmmm...ça ne le fait pas avec une imprimante parallele (du moins celle que j'ai), et si le spooler est fermé (fin de transfert)
un probleme de memoire ? ou juste avec une imprimante Brother usb ? (...)
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

je me repond : ça a l'air d'être un probleme de mémoire
mais c'est quand meme grave qu'on ne puisse pas imprimer une image et lancer un programme de 500ko en même temps avec 800 Mo de ram, bordel !
(vive l'Amiga)
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

"fonctions d'impression" ? euh... sprintf, printf?? ou une redirection vers une imprimante ? en tout cas mon programme n'utilise pas d'imprimante.
j'ecris avec une font bitmap (quelques sprintf pour mettre en forme avant affichage avec le writer bitmap)

et il y a une lecture de fichier binaire au demarrage (bon là j'avoue que je crois avoir un probleme avec mon fichier hiscore : quand j'ajoute quelques routines ou données au programme, il n'est plus capable de relire un ancien fichier hiscore...- cf. plus bas)


le bug apparait quasi au demarrage, ou quelques secondes après, si et seulement si le spooler est ouvert

pourquoi quand j'imprime la même image avec une imprimante parallele, je n'ai pas ce bug ??


<hr />
à propos du bug load/save binaire fichier hiscore voilà le prog :

unsigned long toptenscores[]={
1000000, ..., 0 (10 valeurs)
};

char *toptennames[]={
"NOM.....", ... (10 noms. taille 25 caracteres)
};

BOOL SaveScore()
{
 unsigned char i;
 FILE *hfile; // ouvre le fichier en mode ecriture binaire
 hfile=fopen("hiscores.dat","w+b");

 if(!hfile) return FALSE; // prout

 for(i=0;i<10;i++)
 {
  fwrite(&toptenscores[i],sizeof(char),sizeof(unsigned long),hfile);
  fwrite(&toptennames[i],sizeof(char),25,hfile);
 }

 fclose(hfile);

 // ok
 return TRUE;
}

void LoadScore()
{
 unsigned char i;
 FILE *hfile;

 // ouvre le fichier en mode lecture binaire
 hfile=fopen("hiscores.dat","r+b");
 if(!hfile) return; // pas de fichier hiscore

 // on lit les variables dans le fichier
 for(i=0;i<10;i++)
 {
  fread(&toptenscores[i],sizeof(char),sizeof(unsigned long),hfile);
  fread(&toptennames[i],sizeof(char),25,hfile);
 }

 fclose(hfile);
 return;
}