piroman14
Messages postés18Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention11 novembre 2008
-
1 juil. 2008 à 10:59
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
1 juil. 2008 à 15:28
Noobinho is back!!!
Je souhaite faire une interface graphique pour un programme que j'ai fait en console et qui marchait correctement.
La seule saisie à faire est celle du fichier que je souhaite traiter. Pour cela, j'ai utilisé un bouton parcourir. Le problème est qu'après le if (GetOpenFileName(&ofn)= =TRUE) ma fenêtre plante. Je n'arrive pas à savoir pourquoi. Je n'arrive pas à récupérer le nom du fichier que je souhaite traiter. Merci de m'aider.
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
/*
HICON LoadIcon{
HINSTANCE hInstance, // handle to application instance
PCTSTR lpIconName // name string or resource identifier
};
LoadIcon.hInstance=NULL;
LoadIcon.lpIconName=IDI_WINLOGO;
*/
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 1 juil. 2008 à 15:28
Pas de problème quand on sait quoi répondre !
Je suppose que ces messages sont écris dans une zone d'édition ou dans une zone statique.
SendMessage() est la fonction générale mais il y a aussi SetDlgItemText() qui permet d'écrire plus simplement un texte dans un contrôle Windows (et SetDlgItemInt() pour un entier accessoirement !)
piroman14
Messages postés18Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention11 novembre 2008 1 juil. 2008 à 11:50
oui c vrai tu as raison. je me suis planté dans le copier coller et je l'ai supprimé.
cependant même avec ça le programme ne marche pas: il plante.
pourtant à la compilation le compilateur ne génère aucun message d'erreur.
merci qd même
1) Ne pas confondre le caractère '0' (48 en binaire) avec le caractère '\0' (0 en binaire, '\0' = 0 sans apostrophes) !
2) Le ; à la fin de la ligne while casse tout !
3) Il n'y a pas de terminateur (zéro binaire) placé à la fin de name !
piroman14
Messages postés18Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention11 novembre 2008 1 juil. 2008 à 13:39
Merci Jean-François pour tes conseils très utiles pour la noob que je suis.
Je t'en suis très reconnaissant.
Tes indications marchent presque au détail suivant.
En effet, j'ai oublié de te préciser que dans ma variable name dans laquelle est stockée le chemin de mon fichier ne doit pas figurer l'extension .vtk ( oui je sais je suis chiant).
Ma question (et cette fois c la dernière promis ) est la suivante:
comment faire pour supprimer les 4 caractères .vtk de name??
ok cette question est bidon mais en y répondant vous m'aiderez bcp.
merci d'avance
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 1 juil. 2008 à 14:49
Bonjour,
Ca marche s'il n'y a pas d'autre point avant !
Ex: c:\temp.log\toto.old.log donnera c:\temp au lieu de c:\temp.log\toto.old
Le plus efficace est de recopier entièrement le nom puis de reculer sur le dernier point : c'est lui (et lui seul) qui introduit l'extension (attention la modif proposée, sans contrôle particulier, ne fonctionne que s'il y a une extension) :
i = 0;
while (*(szFile + i) != 0)
{
*(name + i) = *(szFile + i);
++i;
}
while (*(szFile + i) != '.') --i;
*(name + i) = 0; // terminateur à la place du point
Si on veut tenir compte du fait qu'il n'y a pas forcément d'extension :
i = 0;
while (*(szFile + i) != 0)
{
*(name + i) = *(szFile + i);
++i;
}
*(name + i) = 0; // terminateur par défaut
while (i > 0)
{
--i;
if (*(name + i) == '\\') break; // pas d'extension
if (*(name + i) == '/') break; // pas d'extension
if (*(name + i) == '.')
{
*(name + i) = 0; // extension supprimée
break;
}
}
piroman14
Messages postés18Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention11 novembre 2008 1 juil. 2008 à 15:15
Merci Jean-François pour des conseils très justes.
Etant donné que tu réponds de la meilleure des façons aux questions que je me pose.
Pourrais-tu m'éclairer sur le point suivant:
je voudrais au fur et à mesure du traitement de mon fichier vtk ajouter des commentaires du genre:
traitement en cours...
x images ont été générées
est ce bien au moyen d la fonction SendMessage(hEdit...) que je dois m'y prendre.
Oui c vrai j'exagère de te poser toutes ces questions. Ne te sens pas obligé d'y répondre.
Tu m'as déjà bcp aidé pour aujourd'hui et je ne suis pas sur qu'en me machant le travail que je progresserai.
Merci bcp en tout cas.