begin process at 2010 02 10 13:33:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

GetOpenFileName


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

GetOpenFileName

jeudi 24 juillet 2008 à 11:42:44 | GetOpenFileName

piroman14

Salut!
j'ai un problème avec GetOpenFileName
j'en utilise deux et je n'arrive pas à faire fonctionner le premier des deux
je crois qu'il faut utiliser un identifiant du type IDM_OPEN différent pour chacun des GetOpenFileName mais je ne suis pas sur
voici les deux GetOpenFileName que j'utilise:


I)
case WM_PAINT :
{
        if(LOWORD(wParam) == IDM_OPEN)
              {
                OPENFILENAME ofn;
                CHAR szFile[MAX_PATH]={0};

                ZeroMemory(&ofn, sizeof(OPENFILENAME));

                ofn.lStructSize =sizeof(OPENFILENAME);
                ofn.hwndOwner = hwnd;
                ofn.lpstrFile = szFile;
                ofn.nMaxFile = MAX_PATH;
                ofn.lpstrFilter ="Fichier  BMP\0*.bmp\0";
                ofn.nFilterIndex = 1;
                ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
  
                if (GetOpenFileName(&ofn)==TRUE)  

  { 
 
     HBITMAP bitmap;
        HDC dc;
        PAINTSTRUCT ps;
  
  bitmap=(HBITMAP)calloc(1,sizeof(HBITMAP));
  
  LoadImage(NULL,szFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

        dc = BeginPaint(hwnd, &ps);

        DrawState(dc,NULL,NULL,(long)bitmap,NULL,10,10,0,0,DST_BITMAP);

        EndPaint(hwnd, &ps);

        DeleteObject(bitmap);

  return 0;

  }
    }
}

II)
case WM_COMMAND:

            if(LOWORD(wParam) == IDM_OPEN)
              {
     OPENFILENAME ofn;
     CHAR szFile[MAX_PATH]={0};

     ZeroMemory(&ofn, sizeof(OPENFILENAME));

     ofn.lStructSize =sizeof(OPENFILENAME);
     ofn.hwndOwner = hwnd;
     ofn.lpstrFile = szFile;
     ofn.nMaxFile = MAX_PATH;
     ofn.lpstrFilter ="Fichier  VTK\0*.vtk\0";
     ofn.nFilterIndex = 1;
     ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
   
     if (GetOpenFileName(&ofn)==TRUE)

jeudi 24 juillet 2008 à 11:55:08 | Re : GetOpenFileName

buno

Réponse acceptée !
Salut,
Il n'est pas très judicieux d'appeler cette fonction dans le WM_PAINT car tu va y passer des tonnes de fois. C'est ptet pour ça qu'il ne fonctionne pas. Il faut le faire ailleurs...
Pas besoin d'identifiant pour séparer tes 2 appels.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 24 juillet 2008 à 11:55:20 | Re : GetOpenFileName

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
case WM_PAINT
ne gérer QUE le dessinage dans cet event, exit boite de dialog comme toute autre intervention utilisateur.

ciao...
BruNews, MVP VC++
jeudi 24 juillet 2008 à 17:05:21 | Re : GetOpenFileName

piroman14

Merci pour vos conseils!

Je n'avais pas bien compris l'utilité du WM_PAINT.
Sinon auriez vous une idée pourquoi je n'arrive pas à afficher de bitmap avec mon programme?
Merci par avance de vos conseils, je commence à désepsérer qu'un jour mon programme fonctionne.


  case WM_COMMAND:

            if(LOWORD(wParam) == IDM_OPEN)
              {
                OPENFILENAME ofn;
                CHAR szFile[MAX_PATH]={0};

                ZeroMemory(&ofn, sizeof(OPENFILENAME));

                ofn.lStructSize =sizeof(OPENFILENAME);
                ofn.hwndOwner = hwnd;
                ofn.lpstrFile = szFile;
                ofn.nMaxFile = MAX_PATH;
                ofn.lpstrFilter ="Fichier  BMP\0*.bmp\0";
                ofn.nFilterIndex = 1;
                ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
  
                if (GetOpenFileName(&ofn)==TRUE)  

    { 
   
    HBITMAP bitmap;
    PAINTSTRUCT ps;
    HDC hdc;
    
    bitmap=(HBITMAP)calloc(1,sizeof(HBITMAP));
    LoadImage(NULL,szFile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    hdc = BeginPaint(hEdit, &ps);    
    DrawState(hdc,NULL,NULL,(long)bitmap,NULL,10,10,0,0,DST_BITMAP);
    EndPaint(hEdit, &ps);
    DeleteObject(bitmap);
    return 0;

    }
   }

   



Cette discussion est classée dans : bitmap, ofn, openfilename, getopenfilename, szfile


Répondre à ce message

Sujets en rapport avec ce message

ouvrir une image [ par doudouhic ] Bonjour, J'essaye de charger une image à partir du disque dure en utilisant les MFC. j'utilise le code suivant: OPENFILENAME ofn; // common dialog box COPIE DE BITMAP [ par Batman60 ] Bonsoirje cherche le moyen de faire des copies de bitmap mais commentj'ai essayé ceci maischar CopieBmp[MAX_PATH];WIN32_FIND_DATA FileData;<br / OPENFILENAME et fichier ini [ par raoulman ] Bonjour, Voilà le problème. J'ai une boîte de dialogue avec plusieurs EditBox et un bouton qui m'ouvre la boîte de dialogue "ouvrir" de Windows en ut Ouvrir un fichier : problème de LPWSTR ne VC++ [ par marco123456789 ] Je souhaterais obtenir l'adresse d'un fichier en utilisant une fenetre OUVRIR de WINDOWS (un OPENFILENAME).Or le code ne compile pas car il semble imp OPENFILENAME et lpfnHook [ par vecchio56 ] Bonjour,J'aimerais hooker ma boite de dialogue "Enregistrer sous". Je renseigne donc le champ Flags de la manière suivante :ofn.Flags = OFN_OVERWRITEP Pb Edition de Texte !!! [ par ElectricalMan ] Bonjour, j'ai un petit soucis en voulant sauvegarder le contenu d'une EditBox dans un fichier; j'ai que la moitier du contenu qui est sauvegardé ! O WriteFile => caractères non reconnu dans le fichier [ par Flo1987 ] Bonjour,J'ai un problème avec la fonction WriteFile : je cherche à écrire un tableau de double dans un fichier mais je retrouve des caractères non rec RAM lost :( [ par JackosKing ] voilà, j'ai cette fonction:Twiny::BROWSER_PLUG(){ char FileName[MAX_PATH]=""; // surtout ne pas allouer sur le stack sinon on ne reprendra pas la ram! Pb avec GetOpenFileName (OFN_ALLOWMULTISELECT) [ par lapinono ] Bonjour, Voila j'ai ecris un petit bout de programme pour recuperer et afficher le nom de plusieurs fichiers .dat.Mais seulement, celui marche pour un Bitmap... [ par Ramoloss ] Salut tout le monde ... en fait je suis une jeune programmeuse en C et j'ai un piti programme a rendre pour la semaine prochaine .. alors ca serait sy


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,040 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales