LECTURE/ECRITURE DANS UN FICHIER DE SAUVEGARDE N64 [DEV-C++] [API]

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 mai 2006 à 18:15
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006 - 15 mai 2006 à 15:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37579-lecture-ecriture-dans-un-fichier-de-sauvegarde-n64-dev-c-api

v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
15 mai 2006 à 15:10
Pour créer une fenêtre principale non redimensionnable, il suffit de lui donner le style WS_OVERLAPPED mais attention, il faut aussi rajouter:
WS_MINIMIZEBOX pour afficher le bouton [_];
WS_MAXIMIZEBOX pour afficher le bouton |[]| (inutile dans notre cas;
WS_SYSMENU pour afficher le bouton [X].
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
13 mai 2006 à 19:45
Ah OK,
je viens de comprendre, désolé, je suis sur un autre prog en DirectX/OpenGL et je comprenais pas le coup du handle invalide !

J'ai mis CloseHandle(hf); dans ma condition (hf!=HANDLE_INVALIDE_VALUE).

Merci, désolé pour la fuite de cerveau...

PS: je refais le zip
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2006 à 19:37
Mais non MessageBox n'altère rien, c'est le déroulement de ton code qu'il faut juste revoir, si tu arrives dans MessageBox il ne faut pas continuer dans CloseHandle, voila tout.
J'avais mis 'return' histoire d'indiquer mais tu mets ce qu'il convient du moment que tu ne vas pas dans CloseHandle.
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
13 mai 2006 à 19:27
Petit problème,

le compilateur n'accepte pas return; , il faut une valeur mais je ne veux pas quitter l'appli à cause d'un problème de fichier.
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
13 mai 2006 à 19:21
OK,

donc j'ai rajouté return; après le MessageBox(...);

if(hfl != INVALID_HANDLE_VALUE) {
// ton code
}
else {
MessageBox(...);
return;
}
CloseHandle(hfl);

C'est bon comme ça ?

Tu dis que le MessageBox(...); altère le handle du fichier ?
Merci Micro$oft pour ta gestion des pointeurs !
Merci BruNews pour l'info.
Et pour la fenêtre UNRESIZABLE, pas d'autre idée que la DialogBox ? (Trop bête)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2006 à 19:09
CloseHandle ne doit être appelé QUE SI hfl != INVALID_HANDLE_VALUE
et pas en venant de MessageBox car là le handle est invalide.

Un truc de ce genre:
if(hfl == INVALID_HANDLE_VALUE) {
MessageBox(...);
return; // ON NE VA PAS PLUS LOIN
}
// SUITE DU CODE ICI
CloseHandle(hfl);
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
13 mai 2006 à 18:58
Je vois pas du tout ce que tu voudrais que je fasse.
Le fichier est "créer" avant le test et je le "ferme" dans tous les cas.
Pourrais-tu être plus clair s'il te plait.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2006 à 18:49
depuis MessageBox ensuite va passer au CloseHandle, ne devrait pas.
v1kt0r Messages postés 7 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 15 mai 2006
13 mai 2006 à 18:43
Merci BruNews,

j'y avais pensé mais je trouvais pas l'idée terrible. J'aurais préféré un style WS_UNRESIZABLE pour les fenêtres mais y'a pas, dommage.

Pourquoi tu met :

if(hfl != INVALID_HANDLE_VALUE) {
// ton code
}
else {
MessageBox(...); // NE PAS ALLER DESSOUS, RIEN A FERMER
}
CloseHandle(hfl);

C'est ce que j'ai fais.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2006 à 18:15
On fait une dialogbox quand on veut une fenetre non redimensionnable, c'est de loin le plus simple.

if(hfl != INVALID_HANDLE_VALUE) {
// ton code
}
else {
MessageBox(...); // NE PAS ALLER DESSOUS, RIEN A FERMER
}
CloseHandle(hfl);