begin process at 2012 05 30 02:13:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème avec GetOpenFileName()


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

Problème avec GetOpenFileName()

dimanche 12 mars 2006 à 06:02:40 | Problème avec GetOpenFileName()

max12

Administrateur CodeS-SourceS
Salut,
J'ai un problème avec la fonction GetOpenFileName()

BOOL CALLBACK ExplorerDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND Path;

    switch(message)
    {
                case IDC_BTNUPLOAD:
                {
                    OPENFILENAME file;
                    char FileName[MAX_PATH];
                    char Pathname[MAX_PATH];
                   
                    ZeroMemory(FileName, sizeof(FileName));
                    ZeroMemory(&file, sizeof(file));

                    file.hwndOwner = hwnd;
                    file.hInstance = NULL;
                    file.lpstrCustomFilter = NULL;
                    file.nMaxCustFilter = 1;
                    file.nFilterIndex = 1;
                    file.lpstrFileTitle = NULL;
                    file.nMaxFileTitle = NULL;
                    file.lpstrInitialDir = NULL;
                    file.lpstrDefExt = NULL;
                    file.lCustData = NULL;
                    file.lpfnHook = NULL;
                    file.lpTemplateName = NULL;
                    file.lpstrFilter = "Tous les Fichier (*.*)\0*.*\0";
                    file.lpstrDefExt = "*.*";

                    file.nMaxFile = sizeof(FileName);
                    file.lpstrFile = FileName;

                    file.Flags = OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
                    file.lStructSize = sizeof(file);

                    if (GetOpenFileName(&file))
                    {
                        GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, 512);
                        UploadFile(FileName, Pathname);
                    }
                }
              break;
    }   

    return 0;
}

Voilà, parfois pendant que la fenêtre est ouverte j'obtient un plantage de l'application (avant de cliquer sur OK).

Exception non gérée à 0x7ca614ae dans Client trojan v2.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x01384f90

C'est très bizarre, car ça se passe de façon aléatoire on dirait. Souvent c'est après un deuxième appel de la fonction que ça plante. Je n'ai pas encore une grande connaissance du C alors je me demandais si vous auriez une explication, ou peut-être qu'une chose pareil vous serait déjà arrivé (l'expérience quoi). J'ai regardé partout dans l'appli je n'ai pas trouver de mémoire qui semble empiéter.

Aussi je voudrais une info, la fonction GetOpenFileName() étant autoblocante, comment ce fait-il que je peux continuer à utiliser mon programme (y compris la fenêtre qui a lancé le get) sans qu'il bloque ? Et même appeler une deuxième fenêtre d'ouverture (en mettant hwndOwner = 0)

A+

[ Lien ]

if (CPossible)
   
dimanche 12 mars 2006 à 06:28:25 | Re : Problème avec GetOpenFileName()

max12

Administrateur CodeS-SourceS
En passant, je sais que mettre à null était inutile à cause du ZeroMemory() mais j'étais rendu pas mal désespéré :P

[ Lien ]

if (CPossible)
   
dimanche 12 mars 2006 à 09:57:21 | Re : Problème avec GetOpenFileName()

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
lpstrFilter - est lu en tant que chaine 'multi part' où chaque partie est normalement terminée par un zéro et le dernier élem DOIT terminer par 2 zéros, exemple "*.*\0*.*\0\0".
Vire les ZeroMemory inutiles: Filename[0] = 0; suffit pour finir une chaine.
file.lStructSize = sizeof(OPENFILENAME); !!!

GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, 512);
d'où sort ce 512 ???

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 12 mars 2006 à 16:34:13 | Re : Problème avec GetOpenFileName()

SAKingdom

Membre Club
Réponse acceptée !
Oui pourquoi 512. La limite de Pathname est MAX_PATH qui a une valeur de 255 ou 256 ché plus trop. Ça serais plus prudent de faire GetWindowText(GetDlgItem(hwnd, IDC_LISTE_PATH), Pathname, MAX_PATH ou sizeof(Pathname));

___________________________________________
Les plus grands esprits trouvent toujours une solution

dimanche 12 mars 2006 à 16:52:43 | Re : Problème avec GetOpenFileName()

max12

Administrateur CodeS-SourceS
Pour le GetWindowText() je m'en suis aperçu après le post, je venais tout juste de changer le code cette section et j'avais oublier les nouvelles dimentions. Merci pour les conseils, mais ça ne règle pas, je vais continuer à chercher d'éventuel dépassement dans le code, mais la au moins je sais qu'elle est maintenant initialisée comme il faut.

A+

[ Lien ]

if (CPossible)
   
dimanche 12 mars 2006 à 18:54:39 | Re : Problème avec GetOpenFileName()

SAKingdom

Membre Club
T'as peut-etre pas besoin de mettre autant d'info dans ton OPENFILENAME
Tien ceci peut faire l'affaire.

FileName[0] = '\0';
ZeroMemory(&file, sizeof(file));
   
file.lStructSize   = sizeof(file);
file.hwndOwner     = hwnd;
file.lpstrFilter   = "Tous les fichiers (*.*) \0 *.* \0\0";
file.lpstrFile     = FileName;
file.nMaxFile      = MAX_PATH;
file.lpstrDefExt   = "*.*";
file.lpstrTitle    = "Ouvrir un fichier...";
file.Flags         = OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;

___________________________________________
Les plus grands esprits trouvent toujours une solution



Cette discussion est classée dans : file, filename, hwnd, path, getopenfilename


Répondre à ce message

Sujets en rapport avec ce message

API Win32, problème de variable [ par bouba ] Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM Problème avec ifstream [ par slashparof ] Voilà mon problème:Je fais un prog en C++ qui est censé lire dans un fichier et trouver certaines information. Pour améliorer la lisibilité de mon cod Problème d'ouverture de fichier après GetOpenFileName [ par saifer ] salut à tous ! après avoir fouillé a peu près de partt, et écumé tte les solutions, je me décide à exposer mon probleme, dans l'espoir ke kelkun pourr problème avec glaux [ par MAnoMouton ] Salut!J'ai un problème avec Glaux, lorsque je compile j'ai l'erreur suivante:GraphEif error LNK2001: unresolved external symbol "struct _AUX_RGBImageR Savoir quand on clique sur un bouton [ par cyberlewis ] Slt à tous, Voilà j'ai un code que j'ai fait, et normalement si on cliques sur les boutons, ça lance la fonction Encode() ou Decode() en fonction du b FindWindow et SendMessage [ par gbourgeois0019 ] SalutJ'ai un premier programme qui a ceci comme code au tout debut du WinMain :HWND hWnd = FindWindow(0,"MonProgramme");    if ( hWnd != NULL )    {   File mapping [ par deck_bsd ] Bonsoir / Bonjour à tous,Voila j'ai trouvé l'exelente source de BruNews concernant les instance unique de programme. Plutot que de recopier bêtement l probleme d'ouverture de fichier [ par totoscill ] Bonjour,j'aimerai ouvrir un fichier afin de lire des infos inclus dans celui ci mais mon programme n'arrive pas à l'ouvrir.Voici mon code:#include<fon nom d'un fichier,urgentttt [ par naddoush ] salut tous, dans mon interface graphique j'ai un qlinedit et un bouton ouvrir à coté je veux qu'on ouvrant un fichier, seulement le nom de celui ci s' Insérer la valeur d'une variable entre deux balise XML. [ par 2eio ] Bonjour.J'ai créé un programme en Langage C, qui crée un fichier XML avec sa DTD, sous Paradigm C++.Mon problème est que je n'arrive pas à y inclure l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,123 sec (4)

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