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 :

Ouvrir un fichier en "non dur" en C++ ?


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut Ouvrir un fichier en "non dur" en C++ ?
    Bonjour à tous,
    je voudrais programmer une ouverture dite "non dur" de fichier VRML, c'est à dire : appuyer sur un bouton qui me lance la fenêtre pour aller chercher ce fichier puis mettre sur chemin dans une fonction que j'ai déja pour ouvrir mon fichier VRML (j'ai déja tout l'affichage qui marche en ouverture dure, il me reste plus qu'à le faire avec une possibilité à l'utilisateur d'aller chercher son fichier.
    Je ne sais quoi utiliser entre Borland ou Visual C++. J'ai essayé avec le mode MFC de Visual mais il y a tellement de fichier et de fonction que je m'y perd. Alors s'il vous plait, que serait la solution la plus simple.
    On peut plus en parler par mail : noritakasawamura143@wanadoo.fr
    S'il vous plait aidez moi c'est urgent.
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    L'API Windows propose une fonction toute faite pour afficher la boite de dialogue "ouvrir" et récupérer ensuite le nom du fichier choisi :
    Il s'agit de la fonction GetOpenFileName().
    Cette fonction ne nécessite ni MFC, ni .Net et est utilisable (entre autres) en C comme en C++.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc
    L'API Windows propose une fonction toute faite pour afficher la boite de dialogue "ouvrir" et récupérer ensuite le nom du fichier choisi :
    Il s'agit de la fonction GetOpenFileName().
    Cette fonction ne nécessite ni MFC, ni .Net et est utilisable (entre autres) en C comme en C++.
    je trouve partout ce tutoriel :
    Sub ChoixFichier()
    FichierChoisi = Application.GetOpenFilename
    MsgBox FichierChoisi
    End Sub

    mais je ne sais comment l'utiliser !! Copié collé ds Dev C++ ne marche pa !! Pourrais tu me faire un exemple avec tous les include...etc... juste pour voir comment utiliser cette application le plus simple possible (je ne comprend pas avec les sub)
    Merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    C'est du VB, ça...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc
    C'est du VB, ça...
    alors comment faire sur Borland ?? je préfèrerai sur Borland, tu aurais un Tutoriel, ou un lien s'il te plait ?

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Je crois que Borland C++ Builder a ses propres classes C++ et fonctions pour cela.
    Sinon, pour utiliser GetOpenFileName() convenablement, trois étapes:
    1. On lit l'aide de GetOpenFileName() et de la structure OPENFILENAME sur MSDN;
    2. On instancie une structure OPENFILENAME et on la remplit correctement;
    3. On appelle GetOpenFileName() en lui passant un pointeur sur la structure.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc
    C'est du VB, ça...
    tu pourrais m'expliquer comment ça marche sinon ? J'ai essayé ds Visual C++ mais il ne reconnait pas les fonctions. Alors c'est marrant parceque partout sur internet on voit le même tutoriel sur cette fonction mais personne ne détail comment l'utiliser. C'est pas du langage C, c'est pas possible, ça n'a pas la même structure que les autres, et on doit le mettre la fonction Main ? On doit appeler quelle librairie ??...etc.... please, aidez moi...

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    As-tu sauté mon dernier post ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    non mais pour tout t'avouer : je n'ai pas vraiment compris. je ne maitrise pas du tout Visual C++. Donc si tu peux m'expliquer stp.(les mots tels que MSDN je ne comprend pas nan plus)
    Pourquoi personne ne programme ça en C ? Et pourquoi personne ne précise comment pouvoir utiliser cette fonction ??
    Peux tu plus m'expliquer ton dernier message stp ??

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc
    D'accord !! Merci !!
    Donc ça c'est du C, ça a un rapport avec le code ke j'avais copié ?? C'est ce ke tu ce qu'il faut faire pour le définir ? Mais ça n'ai pas déja fait dans une librairie ?
    je fais copié collé, et après ? je dois vraiment définir toutes ces variables ?

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    1. Ça n'a aucun rapport avec le code que tu avais copié, qui était en VB.
    2. La structure est déjà définie dans un fichier d'en-tête inclus pas <windows.h>, tu dois seulement en instancier une et remplir ses champs (beaucoup d'entre eux peuvent être nuls).
    3. L'aide de GetOpenFileName() comporte également un lien avec un exemple.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    tu vas vraiment me trouver lourd, et désespérant, mais quelle la différences entre VB (ki est Visual Basic, c'est ça ?) et Visual C++ (j'ai Microsoft Visual C++), c'est pas la même chose ??
    Et qu'est ce qu'une programmation en VB ?? Que faire pour pouvoir l'utiliser (ça parrait plus simple que en passant par MSDN, lol )
    et pour l'exemple dont tu parles, ce n'est pas un exemple qu'on peut utiliser directement !! C qd mêm bête qu'on puisse pas directement !! Ya pas la structure autour de ça : les include, les librairies, la fonction ki prend ça en compte...etc... je t'avou ke c la première fois que je fais de la programmation orienté objet et qd je vois qu'y en a qui disent que c'est super simple de faire la fonction ouvrir (et me marque de VB, qui parrait plus simple mais ne disent pas comment l'exploiter) et d'un autre on a MSDN qui s'enflamme avec des lignes pour un truc soit disant simple, c'est de l'information pour ceux qui ont bcp plus l'habitude du POO, et c'est injuste pour les autres comme moi qui découvrons.
    Dsl je me suis emballé, revenons à nos moutons...

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Le vieux Visual Basic est obsolète et n'est plus supporté par Microsoft.
    Visual Basic .Net, c'est du .Net, donc ça tourne sur le framework .Net, tout comme C#, C++/CLI, Managed C++, etc.

    À l'inverse, le C++ normal est compilé en langage machine natif et n'a pas besoin du Serveur .Net.
    Avec Visual C++, on peut programmer en C ou en C++ natif avec différentes bibliothèques, telles que l'API Win32 (API système présente sous tous les Windows), ou la bibliothèque C++ MFC (Microsoft Foundation Classes) qui offre des fonctionnalités plus ou moins similaires avec la vaste bibliothèque C++ fournie avec Borland C++ Builder.
    Visual C++ permet aussi de faire du C++/CLI ou du Managed C++, mais ça, c'est pour .Net.


    GetOpenFileName() est une fonction C native, tu peux donc l'utiliser en C, C++ et aussi sous .Net.

    Note: Au cas où l'on se serait mal compris, cette fonction sert à afficher une boîte de dialogue "ouvrir" qui affiche une liste de fichiers, etc.
    Si tu as une bête application console, tu peux toujours demander le chemin à l'utilisateur avec un simple fgets()...

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Je te remercie Enormément pour ta patience et pour cette super explication !! je me sens moins bête maintenant. Merci beaucoup.
    Juste une dernière petite question sur le sujet : pourquoi tout le monde parle en VB alors et pas en C/C++ alors ke tous les ordinateurs peuvent plus facilement ouvrir du C/C++ ke du .Net (ki demande une instalation de framework .Net), surtout si il n'est plus suporter par Microsoft com tu dis, alors pk les gens parlent encore en VB et pas en C/C++ ?

    Bon alors pour l'exemple du site, je l'ai bien regardé, et j'ai fait des essai avec Dev C++. Qd je le met dans une fonction int main (void) rien ne se passe, (l'application ne se lance mêm pas (ou alors ça va tellement vite qu'on ne voit rien lol)) puis j'ai fait un projet Windows sous Dev C++ et g collé l'exemple ds la fonction "int WINAPI WinMain (HINSTANCE.....<truc classic de la fenête de windows sous Dev C>)" et là ça marche, alors pourquoi ? Je suis embêté car normalement je dois faire appelle à l'ouverture d'un fichier en cliquant sur un bouton, donc ma fonction ne peut être "int WINAPI WinMain (...)", alors que faire ?
    Je ne peux faire avec un simple fgets() (ce qui serait tellement simple soit dit en passant) car j'ai une interface graphique, et donc j'ai un bouton sur lequel j'appui pour charger un fichier, puis après il me faut retenir le chemin choisi par l'utilisateur pour le mettre ds ma fonction (que j'ai déja). Tu vois ce que je veux faire ? j'espère que tu pourras m'aider.
    Merci encore.

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Citation Envoyé par NoritakaRomain
    Je te remercie Enormément pour ta patience et pour cette super explication !! je me sens moins bête maintenant. Merci beaucoup.
    Juste une dernière petite question sur le sujet : pourquoi tout le monde parle en VB alors et pas en C/C++ alors ke tous les ordinateurs peuvent plus facilement ouvrir du C/C++ ke du .Net (ki demande une instalation de framework .Net), surtout si il n'est plus suporter par Microsoft com tu dis, alors pk les gens parlent encore en VB et pas en C/C++ ?
    "les gens parlent encore en VB" car:
    • Soit ils confondent avec VB.Net ou pensent implicitement à .Net, comme c'est le cas sur la Doc .Net de Microsoft,
    • Soit ils parlent de VBA (Visual Basic for Applications) car c'est le langage des macros des logiciels Microsoft Office (Word, Excel, etc.)
    • Soit ils utilisent de vieilles applications VB, car il y en a beaucoup.

    Bon alors pour l'exemple du site, je l'ai bien regardé, et j'ai fait des essai avec Dev C++. Qd je le met dans une fonction int main (void) rien ne se passe, (l'application ne se lance mêm pas (ou alors ça va tellement vite qu'on ne voit rien lol))
    Dev-C++ n'empêche pas la fermeture des programmes console, contrairement à Visual ou à Code::Blocks : Rajoute l'instruction system("PAUSE"); (ou un simple getchar()) à la fin de ton main() pour voir ce qui est affiché ou non sur la console.
    puis j'ai fait un projet Windows sous Dev C++ et g collé l'exemple ds la fonction "int WINAPI WinMain (HINSTANCE.....<truc classic de la fenête de windows sous Dev C>)" et là ça marche, alors pourquoi ?
    Je ne sais pas, trop peu d'infos.
    Je suis embêté car normalement je dois faire appelle à l'ouverture d'un fichier en cliquant sur un bouton, donc ma fonction ne peut être "int WINAPI WinMain (...)"
    Pourquoi ?
    alors que faire ?
    Je ne peux faire avec un simple fgets() (ce qui serait tellement simple soit dit en passant) car j'ai une interface graphique, et donc j'ai un bouton sur lequel j'appui pour charger un fichier, puis après il me faut retenir le chemin choisi par l'utilisateur pour le mettre ds ma fonction (que j'ai déja). Tu vois ce que je veux faire ? j'espère que tu pourras m'aider.
    Merci encore.
    Essaie l'exemple indiqué dans l'aide, et regarde tous les champs de la structure OPENFILENAME qui peuvent être ignorés pour réduire ton programme au niveau le plus simple possible.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    ben écoute, j'avais essayé avec le system("PAUSE"); mais on ne voyait pas la fenêtre de sélection de fichier, juste l'application de base avec "appuyer sur une touche..." classic koi.
    Je suis embété pq ça ne marche pas avec une autre fonction que la fonction principale de windows. Même avec main ça marche pas. Et ça m'embête parce que je ne pourrais pas mettre toutes ces lignes ds une fonction de click d'un bouton qui s'appelle différemment de l'application windows. Et puis il ne reconnais plus le hwnd !!! c le bordel koi !!! Je n'arrive pas à trouver un exemple simple qui fonctionne sur internet en plus, ça m'énerve !!! je ne sais plus quoi faire !!!
    tu pourrai me faire un exemple simple de qd on appui sur un bouton, tt simple ça lance ça ?

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Désolé, je n'ai que Visual sous la main, rien pour MinGW...

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc
    Désolé, je n'ai que Visual sous la main, rien pour MinGW...
    alors faisons avec Visual, au contraire c'est celui que je ne maitrise pas du tout, donc pourrais tu me faire un exemple avec Visual ? stp

Discussions similaires

  1. Ouvrir un fichier sur le disque dur en Java
    Par addrock dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 18/05/2011, 17h40
  2. Réponses: 3
    Dernier message: 20/01/2007, 21h36
  3. Télécharger un fichier XML et non l'ouvrir
    Par BouB dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2006, 20h37
  4. Réponses: 3
    Dernier message: 12/10/2005, 14h53

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