IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[Ouverture de fichiers] répertoire


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut [Ouverture de fichiers] répertoire
    Salut à tous,

    Je programme en C++ et je voudrais avoir une fonction "ouvrir un fichier" standard via API Windows. J'utilise le bout de code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    string Menu::chooseOpenFile()
    {
      OPENFILENAME ofn; // common dialog box structure 
      char szFile[260]; // buffer for file name 
      *szFile = 0; //Initialize first value
      HWND hwnd=0; // owner window 
      HANDLE hf; // file handle 
    
      // Initialize OPENFILENAME 
      ZeroMemory(&ofn, sizeof(OPENFILENAME)); 
      ofn.lStructSize = sizeof(OPENFILENAME); 
      ofn.hwndOwner = hwnd; 
      ofn.lpstrFile = szFile; 
      ofn.nMaxFile = sizeof(szFile);
      ofn.lpstrInitialDir = "data";
      ofn.lpstrFilter = "Surface3D files\0*.s3d\0"; //"All\0*.*\0Text\0*.TXT\0";
      ofn.nFilterIndex = 1;
      ofn.lpstrFileTitle = NULL; 
      ofn.nMaxFileTitle = 0; 
      ofn.lpstrInitialDir = NULL; 
      ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; 
      // Display the Open dialog box. 
      if (GetOpenFileName(&ofn)==TRUE) 
      {
        return string(ofn.lpstrFile);
      }
      else return string("");
    }
    Le problème est à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ofn.lpstrInitialDir = "data";
    Quand je compile, il semble trouver le bon répertoire (qui pourtant ne se trouve pas à côté de l'exécutable mais plus haut dans la hiérarchie de fichier). Mais si après je déplace le programme, ça ne marche plus car il retient tout l'URL absolu (genre C:\Programmation\Cpp\...\...\data).

    Moi je voudrais que ça marche avec un répertoire relatif ( ..\data\ ) et non absolu (genre C:\Programmation\Cpp\...\...\data). Ainsi on pourrait déplacer l'exécutable avec ses répertoires et ça marcherait encore.

    J'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ofn.lpstrInitialDir = "../data";
    Mais ça ne marche pas Comment faire ? Merci d'avance

  2. #2
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    GetModuleFileName

    Exemple d'utilisation :
    GetModulePath

    Puis on ajoute data
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    En fait j'avais copié-collé un bout de code et je n'avais pas vu que la commande

    ofn.lpstrInitialDir = NULL;

    était utilisée à la fin, ce qui annulait la première

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] liste de repertoire, ouverture de fichier dans sous répertoire
    Par snake-dam dans le forum MATLAB
    Réponses: 21
    Dernier message: 16/12/2014, 11h34
  2. [XL-2010] Ouverture de fichiers dans répertoire variable
    Par Bpillon dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/10/2011, 10h49
  3. Réponses: 5
    Dernier message: 06/03/2003, 14h27
  4. Réponses: 2
    Dernier message: 26/02/2003, 16h18
  5. [VBA-E] Evenement ouverture de fichier
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/12/2002, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo