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 :

OPENFILENAME


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 117
    Par défaut OPENFILENAME
    salut à tous,

    voila je voudrais ouvrir une boite dialogue pour enregistrer un fichier, récupérer la valeur de type, et rajouter un bouton suivant la valeur de type.
    j'utilise OPENFILNAME avec un CALLBACK mais je sais pas trop comment gérer le CALLBACK. Es-ce que quelqu'un connait un exemple ou pourrai m'expliquer ?

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    UINT_PTR CALLBACK OFNHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
    {
     LPOFNOTIFY lpOfNotify;
     switch (uiMsg)
     {
      case CDN_TYPECHANGE:
      {
       lpOfNotify = (LPOFNOTIFY) lParam;
       char msg[1024];
       sprintf (msg,"%d",lpOfNotify->hdr.idFrom);
       SetWindowText (hWnd_global,msg);
       return false;
       }
      default:
       return false;
     }
    }
    
    BOOL Explorer_Fichier (HWND hWnd,char *type,char *nom_fichier,char *nom_fenetre,char *filtre)
    {
     // on met tte la chaine nom_fichier à 0
     memset (nom_fichier,0,sizeof(nom_fichier));
     // la classe à passer en param
     OPENFILENAME ofn;
     ofn.lStructSize		 = sizeof(OPENFILENAME);
     ofn.hwndOwner		 = hWnd;
     ofn.hInstance		 = 0;
     ofn.lpstrFilter		 = filtre;
     ofn.lpstrFile		 = nom_fichier;
     ofn.lpstrCustomFilter= 0;
     ofn.lpstrFileTitle 	 = 0;
     ofn.nFileExtension	 = 0;
     ofn.nFileOffset		 = 0;
     ofn.lCustData		 = 0;
     ofn.lpTemplateName	 = 0;
     ofn.lpstrInitialDir  = 0;
     ofn.lpstrDefExt		 = 0;
     ofn.lpfnHook		 = 0;
     ofn.nFileExtension	 = 0;
     ofn.nFileExtension	 = 0;
     ofn.nMaxCustFilter	 = 0;
     ofn.nMaxFileTitle	 = 0;
     ofn.nFilterIndex	 = 1; 
     ofn.nMaxFile		 = MAX_PATH;
     ofn.lpstrTitle		 = nom_fenetre;
     ofn.Flags			 = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NOCHANGEDIR;
    
     BOOL ret;
     if (!strcmp(type,"charger"))
      ret = GetOpenFileName (&ofn);
     else if (!strcmp(type,"enregistrer"))
     {
      ofn.lpfnHook	 = (LPCCHOOKPROC)OFNHookProc;
     //		ofn.lpTemplateName = MAKEINTRESOURCE(IDD_CHARGER_RAW);
      ofn.Flags		|= OFN_ENABLEHOOK|OFN_EXPLORER/*|OFN_ENABLETEMPLATE*/;
      ret = GetSaveFileName (&ofn);
     }
     else
      ret = false;
     return ret;
    }

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Si tu ne connais pas la progr. win32 ça tombe bien :
    http://windows.developpez.com/livres/ , le Petzold est un bon investissement.


    Une fonction CALLBACK se gère exactement comme une fonction procédure de messages ( lorsqu'on crée la fenêtre principale avec CreateWindoW dans le Winmain ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
    Tu passes exactement les mêmes paramêtres que dans une fonction de gestion de messages ; donc si tu veux créer un bouton il faut gérer WM_CREATE dans la f() CALLBACK
    Pour cela utiliser le Handle HWND

Discussions similaires

  1. [Compatibilité] Borland, OPENFILENAME et _WIN32_WINNT
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/06/2006, 12h51
  2. Openfilename
    Par Fry dans le forum Windows
    Réponses: 2
    Dernier message: 03/05/2006, 11h50
  3. [VB]Problème de focus fenêtre get.openfilename
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/02/2006, 10h22
  4. [debutant VC++ et C++] Windows form et OPENFILENAME
    Par Le Scandinave dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2005, 15h31
  5. [API] OpenFilename
    Par DelphiCool dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/08/2002, 18h26

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