Pb de chargement de fichier

Résolu
cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007 - 8 juin 2005 à 21:14
cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007 - 8 juin 2005 à 22:27
Bonsoir a tous.

Mon probleme est simple: j'ai cree une dialogbox d'ouverture de fichier afin d'ouvrir un bitmap indique par l'utilisateur. Hors, bien que le chemin d'acces soit retourne dans son integralite, l'image ne peut etre ouverte.

Le code est le suivant:

case IDC_NEW_RECIPE_PICTURE:
{
static char szFileName[MAX_PATH];
HBITMAP hBmp;
HWND hBtn;


if (FileOpenDlg (hDlg, szFileName))
{
MessageBox( NULL, szFileName, "Error", MB_OK | MB_ICONINFORMATION );
hBmp = (HBITMAP)LoadImage(hInst,szFileName,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE);
if (hBmp == NULL)
{
LPVOID lpMsgBuf;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL
);
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
hBtn = GetDlgItem(hDlg,IDC_NEW_RECIPE_PICTURE);
SendMessage(hBtn,BM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBmp);
}
}

ou la fonction FileOpenDlg est:

bool FileOpenDlg (HWND hWnd, char* szFileName)
{
openFileName.hwndOwner = hWnd ;
openFileName.lpstrFilter = szFilter[0] ;
openFileName.lpstrFile = szFileName ;
openFileName.nMaxFile = MAX_PATH ;
openFileName.Flags = OFN_CREATEPROMPT ;
openFileName.lpstrDefExt = TEXT ("bmp") ;

return GetOpenFileName (&openFileName) ;
}

Pouvez vous m'expliquer pourquoi cela ne fonctionne pas???

Vous pouvez constater que j'ai deja piste l'erreur grace a la fonction GetLastError(), laquelle me retourne ce message:

"Le nom de ressource spéficié ne peut être trouvé dans le fichier image."

Malheureusement je ne comprend ce que ca veut dire...

Merci de votre aide.

2 réponses

bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
8 juin 2005 à 22:19
Et bien ça veut dire que la bitmap n'est pas dans les resources de l'executable...Si c'est bien chargé un bitmap à partir d'un fichier il faut le specifier à LoadImage en mettant le hInstance nule et LR_LOADFROMFILE dans les flags.


mayonaise tournera, bientôt, très bientôt...
3
cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007
8 juin 2005 à 22:27
Merci beaucoup.
ca marche a merveille en faisant :
hBmp = (HBITMAP)LoadImage(0,szFileName,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
0
Rejoignez-nous