Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : GetOpenFileName [ Windows / GUI ] (piroman14)

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é 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 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 questions sur allegro (compteur, bitmap..) [ par Milli ] bonjour, j ai plusieurs question a propos d allegro:1/ comment réaliser un compteur2/quand on quitte une fonction, est ce que les bitmap que l ona c


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.