Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
811 connectés 

  FORUM HardWare.fr
  Programmation

  C++, prog Win32, question simple de débutant !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C++, prog Win32, question simple de débutant !

n°34088
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 16:15:21  profilanswer
 

Est-ce que quelqu'un connait les fonctions et les fichiers d'en-tête pour utiliser une boite d'ouverture ou/et de sauvegarde de fichier.
 
  J'ai trouver en faisant une recherche sur kro$oft deux classes OpenFileDialog et SaveFileDialog. Cependant, ces documents n'indiquent pas les fichiers d'en-tête, il n'indiquent même pas si c'est pour le C++ .
voilà la page si vous comprenez mieux que moi :
 
http://msdn.microsoft.com/library/ [...] stopic.htm
 
 
quelqu'un pourrait éclairé ma lanterne de débutant qui a bien du mal avec son petit pétrole à 2 sous.
 
Merci d'avance et à plus !
 
 :bounce:

 

[edit]--Message édité par Moustaaki--[/edit]

mood
Publicité
Posté le 23-05-2001 à 16:15:21  profilanswer
 

n°34107
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 16:30:49  profilanswer
 

:hot: c'est lourd de bloquer, n'est ce pas ?

n°34116
El_gringo
Posté le 23-05-2001 à 16:38:07  profilanswer
 

mais t'utilises pas les MFC !?

n°34120
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 16:41:11  profilanswer
 

c'est quoi les mfc ??
 
je débute en prog windows, j'apprends tout seul et j'ai un peu de mal à tout capter.
Peut-être que je les utilise sans le savoir .
 
explique moi tout ça, s'il te plait, ça serait bien cool de ta part !  :jap:

n°34122
petoulachi
A fortiori, brigadier chef
Posté le 23-05-2001 à 16:41:58  profilanswer
 

si je ne m'abuse, les MFC c les bibli de microsoft

n°34125
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 16:45:04  profilanswer
 

si tu ne t'abuse ?
Microsoft Fondation Class, c'est ça, ok ...

 

[edit]--Message édité par Moustaaki--[/edit]

n°34128
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 16:47:27  profilanswer
 

on vient de me filer ça sur un forum (programmationworld) :
 
 
//si on demande a ouvrir une nouvelle carte   case CM_FILEOPEN:    //vider le buffer contenant le chemin de la carte    szFile[0] = 0;    //vider le buffer contenant le titre de la carte    szFileTitle[0] = 0;    //vider le buffer contenant le nom du répertoire    szInitDir[0] = 0;    //vider le buffer du filtre de fichier    memset (filtreDeFichier, 0, sizeof (filtreDeFichier));    //copier dans le buffer la string du filtre de fichiers    strcpy (filtreDeFichier, "Fichiers Cartes DirectX (*.EDX)|*.edx" );    //terminer la string par un 0    filtreDeFichier[37] = 0;    //vider le buffer    memset(&nomDuFichierOuvert, 0, sizeof(OPENFILENAME));    //definir les paramêtres pour la boite de dialogue open    nomDuFichierOuvert.lStructSize = sizeof(OPENFILENAME);    nomDuFichierOuvert.hwndOwner = hwnd;    nomDuFichierOuvert.lpstrFilter = filtreDeFichier;    nomDuFichierOuvert.nFilterIndex = 1;    nomDuFichierOuvert.lpstrFile= szFile;    nomDuFichierOuvert.nMaxFile = sizeof(szFile);    nomDuFichierOuvert.lpstrFileTitle = szFileTitle;    nomDuFichierOuvert.nMaxFileTitle = sizeof(szFileTitle);    nomDuFichierOuvert.lpstrInitialDir = szInitDir;    nomDuFichierOuvert.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;    //si on a ouvert correctement un fichier    if (GetOpenFileName(&nomDuFichierOuvert))    {     //si la carte d'avant a été modifiée     if (carteModifiee)      {       //informer l'utilisateur      if (MessageBox (hwnd, "Attention:\nLa carte a été modifiée mais n'a pas été eregistrée, continuer la création d'une nouvelle carte?",     "EdiX", MB_OKCANCEL | MB_ICONQUESTION)==IDOK)       {        strcpy (nomDeLaCarte, szFile);        MEDestroyUndoBuffs();       LoadProject ();       curlayer = 0;        onion = 0;       oniondark = 0;       carteModifiee = 0;       Rejig ();      }     }      else      {       strcpy (nomDeLaCarte, szFile);      MEDestroyUndoBuffs();      LoadProject ();      curlayer = 0;       onion = 0;      oniondark = 0;      Rejig ();     }    }    break;   //si on sauvegarde la carte   case CM_FILESAVE:    //si une carte est en cours d'utilisation    if (nomDeLaCarte[0] && mappt!=NULL)     {     //alors si on  ne peut sauvegarder     if (SaveProject ())      //en informer l'utilisateur      MessageBox (hwnd, "Impossible de sauvegarder la carte !", "EdiX", MB_OK | MB_ICONEXCLAMATION);     else       //indiquer que la carte est modifiée      carteModifiee = 0;    }    break;   //si on sauvegarde sous   case CM_FILESAVEAS:    //si aucune map n'a été ouverte    if (mappt==NULL)     {      //en informer l'utilisateur     MessageBox (hwnd, "Aucune carte a sauvegarder !", "EdiX", MB_OK | MB_ICONEXCLAMATION);     break;    }    //vider le buffer contenant le chemin de la carte    szFile[0] = 0;    //vider le buffer contenant le titre de la carte    szFileTitle[0] = 0;    //vider le buffer contenant le nom du répertoire    szInitDir[0] = 0;    //vider le buffer du filtre de fichier    memset (filtreDeFichier, 0, sizeof (filtreDeFichier));    //copier dans le buffer la string du filtre de fichiers    strcpy (filtreDeFichier, "Fichiers Cartes DirectX (*.EDX)|*.edx" );    //terminer la string par un 0    filtreDeFichier[37] = 0;    //vider le buffer    memset(&nomDuFichierOuvert, 0, sizeof(OPENFILENAME));        //definir les paramêtres pour la boite de dialogue save as    nomDuFichierOuvert.lStructSize = sizeof(OPENFILENAME);    nomDuFichierOuvert.hwndOwner = hwnd;    nomDuFichierOuvert.lpstrFilter = filtreDeFichier;    nomDuFichierOuvert.nFilterIndex = 1;    nomDuFichierOuvert.lpstrFile= szFile;    nomDuFichierOuvert.nMaxFile = sizeof(szFile);    nomDuFichierOuvert.lpstrFileTitle = szFileTitle;    nomDuFichierOuvert.nMaxFileTitle = sizeof(szFileTitle);    nomDuFichierOuvert.lpstrInitialDir = szInitDir;    nomDuFichierOuvert.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;    //si on sauvegarde sous sans problèmes    if (GetSaveFileName(&nomDuFichierOuvert))    {     //enregistrer le nouveau nom de la carte     strcpy (nomDeLaCarte, szFile);     //obtenir la taille de ce nom     increment = strlen (nomDeLaCarte);     while (increment)       {       //chercher le '.' delimitant l'extantion       if (nomDeLaCarte[increment]=='.')        break;       //réduire l'increment de 1       increment--;      }     //si le nom ne contient pas l'extension...     if (strcmp (nomDeLaCarte+increment, ".edx" ) && strcmp (nomDeLaCarte+increment, ".edx" ))      //...alors donner l'extension      strcat (nomDeLaCarte, ".edx" );     //si on arrive pas a sauvegarder le fichier...     if (SaveProject ())       //...alors en informer l'utilisateur      MessageBox (hwnd, "Impossible de sauvegarder la carte !", "EdiX", MB_OK | MB_ICONEXCLAMATION);     //sinon indiquer que la carte vient d'être sauvegardée     else carteModifiee = 0;    }    break;   //si on importe une carte   case CM_FILEIMPORT:    //si aucune carte n'a été ouverte, il n'y a rien à importer    if (mappt==NULL)     break;        //vider le buffer contenant le chemin de la carte    szFile[0] = 0;    //vider le buffer contenant le titre de la carte    szFileTitle[0] = 0;    //vider le buffer contenant le nom du répertoire    szInitDir[0] = 0;    //vider le buffer du filtre de fichier    memset (filtreDeFichier, 0, sizeof (filtreDeFichier));    //copier dans le buffer la string du filtre de fichiers    strcpy (filtreDeFichier, "Bitmap files (*.BMP)|*.bmp|Map Array Layer (*.MAR)|*.mar" );    //terminer la string par un 0    filtreDeFichier[20] = 0;    filtreDeFichier[26] = 0;    filtreDeFichier[56] = 0;    //vider le buffer    memset(&nomDuFichierOuvert, 0, sizeof(OPENFILENAME));        //definir les paramêtres pour la boite de dialogue open    nomDuFichierOuvert.lStructSize = sizeof(OPENFILENAME);    nomDuFichierOuvert.hwndOwner = hwnd;    nomDuFichierOuvert.lpstrFilter = filtreDeFichier;    nomDuFichierOuvert.nFilterIndex = 1;    nomDuFichierOuvert.lpstrFile= szFile;    nomDuFichierOuvert.nMaxFile = sizeof(szFile);    nomDuFichierOuvert.lpstrFileTitle = szFileTitle;    nomDuFichierOuvert.nMaxFileTitle = sizeof(szFileTitle);    nomDuFichierOuvert.lpstrInitialDir = szInitDir;    nomDuFichierOuvert.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;    //si on a reussit à importer correctement    if (GetOpenFileName(&nomDuFichierOuvert))    {     //on detruit les buffers d'annulation     MEDestroyUndoBuffs();     //si on a importé un map layer     if (!strcmp ((szFile+strlen(szFile))-4, ".MAR" ) || !strcmp ((szFile+strlen(szFile))-4, ".mar" ))     {      //ouvrir le fichier      marfpt = fopen (szFile, "rb" );      //s'il n'existe pas      if (marfpt==NULL)       {        MessageBox (hwnd, "Erreur lors de l'importation de données de carte, opération annulée", "Importer", MB_OK|MB_ICONEXCLAMATION);       break;      }      //mettre la position du pointeur à la fin de marfpt      fseek (marfpt, 0, SEEK_END);      //chercher la position de ce pointeur et la sauvegarder dans 'increment'      increment = (int) ftell (marfpt);      //si l'increment n'a pas la bonne valeur correpondant a la taille souhaitée      if (increment!=(largeurCarte*hauteurCarte*2))        {         //on ferme le fichier        fclose (marfpt);        //et on informe l'utilisateur        MessageBox (hwnd, "Erreur lors de l'importation de la taille de la carte (mauvaise taille!), abandon", "Importer", MB_OK|MB_ICONEXCLAMATION);        //sortir        break;       }      //mettre le pointeur au début du fichier      fseek (marfpt, 0, SEEK_SET);      //lire données de 1 octet increment fois dans le fichier marfpt et le sauvegarder dans mappt      if ((signed)fread (mappt, 1, increment, marfpt)!=increment)        {        //fermer  le fichier        fclose (marfpt);        MessageBox (hwnd, "Erreur lors de l'importation de la taille de la map", "Importer", MB_OK|MB_ICONEXCLAMATION);        //sortir        break;       }      fclose (marfpt);     }      else     {      //suivant la réponse de l'utilisateur      if (MessageBox (hwnd, "Créer de nouveaux blocks à partir des graphiques importés?", "Importer", MB_YESNO|MB_ICONQUESTION)==IDYES)        increment=-1;      else        increment=0;      if (increment==0)       if (MessageBox (hwnd, "Remplacer les graphiques existants?", "Importer", MB_YESNO|MB_ICONQUESTION)==IDYES)         numblockgfx = 1;      //définir le curseur      sauvegardeHandleCurseur = SetCursor(LoadCursor(NULL, IDC_WAIT));      if (IMImportBlocks (szFile, increment))       MessageBox (hwnd, "Une erreur s'est produite lors de l'importation des blocks, regardez le fichier d'aide à la section importation\n" "Faute généralement commise:\nLe fichier BMP est compressé\nLe fichier BMP n'a pas le bon nombre de couleur", "Importer", MB_OK|MB_ICONEXCLAMATION);      //definir le curseur      SetCursor (sauvegardeHandleCurseur);      Rejig ();     }    }    carteModifiee = 1;    InvalidateAll ();    break;
 
 
 
c'est assez énorme, non ?
 
et en plus ça fout un bordel monstre en post !

 

[edit]--Message édité par Moustaaki--[/edit]

n°34130
El_gringo
Posté le 23-05-2001 à 16:48:36  profilanswer
 

Moustaaki a écrit a écrit :

c'est quoi les mfc ??
 
je débute en prog windows, j'apprends tout seul et j'ai un peu de mal à tout capter.
Peut-être que je les utilise sans le savoir .
 
explique moi tout ça, s'il te plait, ça serait bien cool de ta part !  :jap:




 
Moi aussi je début et j'apprend tout seul, je suis qu'un p'tit stagiaire ! :hap:  
T en galère on dirait, t presque suppliant, j'aime qu'on me supplie, supplies moi encore un peu... :D

n°34134
El_gringo
Posté le 23-05-2001 à 16:52:32  profilanswer
 

non, j'rigole (marrant, non !? :D )
en fait les MFC c des classes fournies avec Visual c++ (surement plein d'autre truc, comme C++ Bulider, ...) qui utilisent les fonction de l'api windows (bibliothèque miscrosoft pour gérer...tout, sous windows !)
Et donc, dans les MFC, t'as une classe héritée de CDialog (CDialog c la classe des boites de dialogue) qui s'appelle CFileDialogue qui sert à exactement ce que tu veux !
cherches dans ta doc (t'as pas msdn !?) tu peux surement utiliser les MFC...
c quoi ton logiciel de développement ?

n°34145
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 17:12:40  profilanswer
 

ouai, j'ai pas msdn ... j'ai pas encore ressus la version complète du  logiciel ... mais on la commandée, on est pas completement dans l'ilégal (ça coute que 70F pour nous, en plus).
 
ouai, je mécarte un peu mais j'ai pas de doc alors je cherche sur l'aide en ligne en général, ça ma aidé à faire une fenetre et son menu sans trop de problème mais pour la boite de dialogue, j'avais plus de mal.
 
CFileDialoque, donc. merci bien, je vais essayer de trouver le header
 
 
moi aussi, je suis un petit stagiaire ! mais j'ai pas la doc

 

[edit]--Message édité par Moustaaki--[/edit]

mood
Publicité
Posté le 23-05-2001 à 17:12:40  profilanswer
 

n°34146
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 17:15:24  profilanswer
 

Moustaaki a écrit a écrit :

ouai, j'ai pas msdn ... j'ai pas encore ressus la version complète du  logiciel ... mais on la commandée, on est pas completement dans l'ilégal (ça coute que 70F pour nous, en plus).
 
ouai, je mécarte un peu mais j'ai pas de doc alors je cherche sur l'aide en ligne en général, ça ma aidé à faire une fenetre et son menu sans trop de problème mais pour la boite de dialogue, j'avais plus de mal.
 
CFileDialoque, donc. merci bien, je vais essayer de trouver le header à moin que windows.h suffise ?
 
 
moi aussi, je suis un petit stagiaire ! mais j'ai pas la doc
 
 




 
 
raté

 

[edit]--Message édité par Moustaaki--[/edit]

n°34150
verdoux
And I'm still waiting
Posté le 23-05-2001 à 17:19:46  profilanswer
 

Sans doc, pas de salut !
D'ailleurs je suis toujours surpris quand je vois des boîtes qui ont très peu de docs papier (ou alors planquées dans une armoire sous clef).
Voir un type qui code sans doc à coté de lui, ça fout les boules.
 
Doc papier + CDROM + accès au net, c'est indispensable.

n°34153
haahhahaha​ha
Posté le 23-05-2001 à 17:22:01  profilanswer
 

la doc que ta trouve c pour .NET et je ne pense pas que tu a le SDK .NET.
D'ailleur c pas de la prog Win32 :sarcastic:  
 
en Win32, t'utilise la structure OPENFILENAME que tu passe en arg a GetOpenFileName ou GetSaveFileName.
 
trouve de la doc sur c fonctions.
 
Sinon ben t'utilise les MFC.
 
moi perso j'aime pas et je me fait des classes dans le genre en ce moment mais avec qq truc en mieux  ;)


---------------
haahhahahaha == TheJackal
n°34154
haahhahaha​ha
Posté le 23-05-2001 à 17:24:06  profilanswer
 

la doc papier... elle peut etre remplacer par celle du PC.
 
en +, essaye de mettre les 5 Go (sans les videos) de la doc MSDN  :D


---------------
haahhahahaha == TheJackal
n°34155
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 17:26:28  profilanswer
 

#include <afxdlgs.h>
 
argl :
e:\hugo\programs\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
 
 
ça veut dire que je n'était pas en train d'utiliser MFC !
ARGL !
 
j'ai suivi le programme generic décrit sur msdn.microsoft.com et ça utilise pas MFC, apparement.

 

[edit]--Message édité par Moustaaki--[/edit]

n°34157
haahhahaha​ha
Posté le 23-05-2001 à 17:29:09  profilanswer
 

pour MFC bien sur (faut preciser bonhomme)


---------------
haahhahahaha == TheJackal
n°34160
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 23-05-2001 à 17:32:46  profilanswer
 

je n'ai pas ces cds ....
 
j'ai qu'un copie du premier cd (que l'instal), j' attends de recevoir le pack en entier.
 
pour l'instant, je n'ai que la doc du net, donc je compte un peu sur vous !!
 
je vais essayer ce que dit le rigolard (hahahahhahhahhahahh)
 
merci ! à plus !

n°34188
haahhahaha​ha
Posté le 23-05-2001 à 22:13:10  profilanswer
 

si c pas de l'MFC explique moi le debut du fichier :
 
"// This is a part of the Microsoft Foundation Classes C++ library."


---------------
haahhahahaha == TheJackal
n°34247
zubrowka
Posté le 24-05-2001 à 18:49:13  profilanswer
 

moi j'ai msdn, si tu veu j'te le passe ! :eek2:  :hot:  :bounce:  :spookie:

n°34263
haahhahaha​ha
Posté le 24-05-2001 à 19:08:03  profilanswer
 

vandale


---------------
haahhahahaha == TheJackal
n°34336
El_gringo
Posté le 25-05-2001 à 09:39:08  profilanswer
 

Verdoux a écrit a écrit :

Sans doc, pas de salut !
D'ailleurs je suis toujours surpris quand je vois des boîtes qui ont très peu de docs papier (ou alors planquées dans une armoire sous clef).
Voir un type qui code sans doc à coté de lui, ça fout les boules.
 
Doc papier + CDROM + accès au net, c'est indispensable.




 
G pas de doc papier, c grave docteur ? :ouch:

n°34482
gilou
Modérateur
Modzilla
Posté le 26-05-2001 à 03:49:22  profilanswer
 

Moustaaki,
Ce que tu as demarre est tres bien, si tu apprends Windows, utilises l'API windows, et evites dans un premier temps d'utiliser les MFC.
C'est un peu plus lourd, mais tu comprendras mieux ce que tu fais, et si un jour tu passes sur une autre plateforme (X-windows par exemple), tu verras que les principes de base sont les memes (meme si l'API X-Windows est mieux concue que celle a Bilou, mais ca, c'est pas une surprise).
Recuperres d'occase un bouquin de Petzold, l'API change assez peu (sauf le passage Wn3.1-->Win95), et la majorite des exemples devraient encore tourner.
Les MFC ca permet d'ecrire du code plus rapidement, mais ca a des limitations, comme toute Framework, et la mecanique qui fait tourner les MFC a coup de macros et autres globales cachees est pas des plus clean.  
A+,

 

[edit]--Message édité par gilou--[/edit]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°34486
haahhahaha​ha
Posté le 26-05-2001 à 07:17:58  profilanswer
 

petzold rocks !


---------------
haahhahahaha == TheJackal
n°34488
gilou
Modérateur
Modzilla
Posté le 26-05-2001 à 08:22:40  profilanswer
 

Moustaaki a écrit a écrit :

Est-ce que quelqu'un connait les fonctions et les fichiers d'en-tête pour utiliser une boite d'ouverture ou/et de sauvegarde de fichier.
 
  J'ai trouver en faisant une recherche sur kro$oft deux classes OpenFileDialog et SaveFileDialog. Cependant, ces documents n'indiquent pas les fichiers d'en-tête, il n'indiquent même pas si c'est pour le C++ .
voilà la page si vous comprenez mieux que moi :
 
http://msdn.microsoft.com/library/ [...] stopic.htm
 
 
quelqu'un pourrait éclairé ma lanterne de débutant qui a bien du mal avec son petit pétrole à 2 sous.
 
Merci d'avance et à plus !
 
 :bounce:
 
 




 
Ni du C ni du C++: c'est du C#, la nouvelle cochonnerie proprietaire et fortement pompee sur java a Bilou.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°34505
haahhahaha​ha
Posté le 26-05-2001 à 15:01:18  profilanswer
 

deja c pas du tout du C# !
quel dommage pour toi :D :D
c la 2eme connerie que tu sort (apres afxdlg.h est pas MFC) :D  
a la 3eme tu sort :D  
 
voila, c pas du C# c le framework .NET et tu peux tres bien l'utiliser avec C++ ou VB et je l'ai dit plus haut
 
jsuis bo, fort et intelligent :sol: :sol:


---------------
haahhahahaha == TheJackal
n°34812
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 28-05-2001 à 14:21:39  profilanswer
 

....
 
et en plus, tu sait rester humble et modeste !   :love:
 
 
merci à tous pour vos réponses !

 

[edit]--Message édité par Moustaaki--[/edit]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C++, prog Win32, question simple de débutant !

 

Sujets relatifs
[VC++] question sur gethostbyaddrPour une question C++ qui m'interroge !
question existentialiste du developpeur !![JAVA] RMI debutant
[javascript] tres tres simple !Question à 2 balles :-) Integrer IRC dans une page Web.
[javascript] un truc simple...Prog sur Windows CE/PocketPC...vous avez des bonnes adresse ?
prog de windows[HTML] question bete: ecrire par dessus une couche
Plus de sujets relatifs à : C++, prog Win32, question simple de débutant !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR