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

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

Marsh Posté le 23-05-2001 à 16:15:21    

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]

Reply

Marsh Posté le 23-05-2001 à 16:15:21   

Reply

Marsh Posté le 23-05-2001 à 16:30:49    

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

Reply

Marsh Posté le 23-05-2001 à 16:38:07    

mais t'utilises pas les MFC !?

Reply

Marsh Posté le 23-05-2001 à 16:41:11    

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:

Reply

Marsh Posté le 23-05-2001 à 16:41:58    

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

Reply

Marsh Posté le 23-05-2001 à 16:45:04    

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

 

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

Reply

Marsh Posté le 23-05-2001 à 16:47:27    

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]

Reply

Marsh Posté le 23-05-2001 à 16:48:36    

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

Reply

Marsh Posté le 23-05-2001 à 16:52:32    

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 ?

Reply

Marsh Posté le 23-05-2001 à 17:12:40    

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]

Reply

Marsh Posté le 23-05-2001 à 17:12:40   

Reply

Marsh Posté le 23-05-2001 à 17:15:24    

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]

Reply

Marsh Posté le 23-05-2001 à 17:19:46    

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.

Reply

Marsh Posté le 23-05-2001 à 17:22:01    

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
Reply

Marsh Posté le 23-05-2001 à 17:24:06    

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
Reply

Marsh Posté le 23-05-2001 à 17:26:28    

#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]

Reply

Marsh Posté le 23-05-2001 à 17:29:09    

pour MFC bien sur (faut preciser bonhomme)


---------------
haahhahahaha == TheJackal
Reply

Marsh Posté le 23-05-2001 à 17:32:46    

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 !

Reply

Marsh Posté le 23-05-2001 à 22:13:10    

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
Reply

Marsh Posté le 24-05-2001 à 18:49:13    

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

Reply

Marsh Posté le 24-05-2001 à 19:08:03    

vandale


---------------
haahhahahaha == TheJackal
Reply

Marsh Posté le 25-05-2001 à 09:39:08    

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:

Reply

Marsh Posté le 26-05-2001 à 03:49:22    

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é!  --
Reply

Marsh Posté le 26-05-2001 à 07:17:58    

petzold rocks !


---------------
haahhahahaha == TheJackal
Reply

Marsh Posté le 26-05-2001 à 08:22:40    

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é!  --
Reply

Marsh Posté le 26-05-2001 à 15:01:18    

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
Reply

Marsh Posté le 28-05-2001 à 14:21:39    

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

 

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed