Ouverture de fichier

cs_klidou Messages postés 9 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 20 avril 2005 - 20 avril 2005 à 08:59
cs_klidou Messages postés 9 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 20 avril 2005 - 20 avril 2005 à 11:44
Bonjour, j'utilise les fonctions API 'GetOpenFileName(OPENFILENAME *pofn)' et 'GetSaveFileName(OPENFILENAME *pofn)' et je n'arrive pas a recuperer le path du fichier d'ouverture (/ de sauvegarde).

Voila ce que je fais : (g recuperé le code sur le net)
************
OPENFILENAME st;
HWND hWnd = GetSafeHwnd();
char buffer[100];


// Pas de fichier par défaut
buffer[0]='';
// On met tous les champs inutilisés à 0
memset(&st,0,sizeof(OPENFILENAME));
st.lStructSize=sizeof(OPENFILENAME);


// hDlg est le HWND de la boite de dialogue qui demande l'ouverture
// Ou NULL si la boite de dialogue n'a pas de fenêtre parent
st.hwndOwner=hWnd;
// La syntaxe est : Description1Filtre1Description2Filtre2
st.lpstrFilter="*.pgs";
//st.lpstrFile=buffer;
st.nMaxFile=MAX_PATH;
st.lpstrTitle="Save";
st.Flags=NULL;
// Contient le répertoire initial ou NULL
st.lpstrInitialDir=NULL;


if(GetSaveFileName(&st))
{
je devrais recuperer le nom du fichier ici dans st.lpstrFileName je pense mais rien !!!
}

************

Help please

4 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 avril 2005 à 09:15
C'est normal que tu récupère rien tu fourni pas de buffer :
//st.lpstrFile=buffer; -> ligne en commentaire

char g_szFileName[_MAX_PATH] = "";
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFilter = "All files (*.*)\0*.*\0";
ofn.lpstrFile = g_szFileName;
ofn.nMaxFile = _MAX_PATH;
ofn.hwndOwner = g_hMainDlg;
ofn.Flags = OFN_PATHMUSTEXIST|OFN_OVERWRITEPROMPT|OFN_LONGNAMES|OFN_HIDEREADONLY;
if(GetSaveFileName(&ofn))
{
}
0
cs_klidou Messages postés 9 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 20 avril 2005
20 avril 2005 à 11:23
merci pour ta reponse, effectivement ca marche avec une precedente initialisation du buffer à 0 ("buffer[0] = 0").

Une autre question : si je crée des fichiers ".tuc" comment je peux faire en sorte que quand la fenetre d'ouverture(de sauvegarde) n'affiche que les fichiers ".tuc".

pour ma part je fais:
OPENFILENAME ofn;
ofn.lpstrFilter = "Tuc Files (*.tuc)" -> il m'affiche tout les fichiers existants

si je fais
ofn.lpstrFilter = "Tuc Files (.tuc)" -> il ne m'affiche aucun fichier

???????????????????
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 avril 2005 à 11:32
Regarde la doc MSDN à ce sujet, le filtre doit être composé de parire éparées par des '\0' et la dernière par un double '\0'
la première chaîne est le texte et la deuxième le filtre
ofn.lpstrFilter = "Tuc file (*.tuc)\0*.tuc\0All files (*.*)\0*.*\0";

le texte entre parenthèse n'est là qu'atitrre infotrmatif pour l'uitilisateur, le véritable filtre est la 2 èùme chaîne de la paire qui peut contenir plusieur fliltre séparer par des ;
0
cs_klidou Messages postés 9 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 20 avril 2005
20 avril 2005 à 11:44
Merci pour tes reponses.
Tout fonctionne c cool
0
Rejoignez-nous