voila qui devrait participer a la resolution des prblemes de types ;)
cs_rainiou
Messages postés6Date d'inscriptionlundi 31 octobre 2005StatutMembreDernière intervention24 juin 2007 22 juin 2007 à 15:23
Salut!
voila j'ai un petit soucis... je suis pas un pro de c++ et encore moins de VC. Je suis sous VC7 (.net) et j'ai un soucis en utilisant ce script:
Donc je test le CoInitializeEx (et non ex), cela me renvoit un code de reussite... de meme pour la conversion du path, mais lors de la conversion de l'image ca plante.
J'ai lu qu'il y avait des problemes avec OleLoadPicturePath si l'image de type JP(E)G, BMP, GIF ne sont pas bien "structures" allez savoir pourquoi... en ce qui me concerne j'ai donc teste sur plusieurs images crees avec PAINT (me disant que de MS a MS ca devrait aller) en differents formats, et j'ai toujours une erreur.
Quelqu'un aurait il eu le meme probleme en utilisant ce script? si oui quelle solution avez vous mis en place?
Est ce que le fait de desactiver cette librairie : "libcmt.lib" joue un role, ou egalement le fait que je soit en Single Threaded (je penche plus pour cette raison)?
genetin
Messages postés9Date d'inscriptionjeudi 1 février 2007StatutMembreDernière intervention 6 décembre 2008 3 févr. 2007 à 12:41
Ca fonctionne très bien, bravo.
Mais à quoi sert le CopyImage() ?
J'ai assayé d'afficher directement la bitmap hPic, et ça fonctionne très bien (en évitant une copie qui semble inutile).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 mars 2006 à 16:41
L'image a la taille qu'elle a et basta, c'est à toi de calculer pour StretchDIBits() par exemple.
cedekasme
Messages postés3Date d'inscriptionjeudi 14 août 2003StatutMembreDernière intervention15 mars 2006 15 mars 2006 à 16:20
Merci BruNews :)
J'ai corrigé quelques problèmes puis j'ai ajouté le fameux "CoInitialize(NULL)" dans l'initialisation de ma classe (logique lol), et cela marche!
Par contre, comment je peux faire pour que mon image ait une taille prédéfinie? En fait je me suis amusé avec get_Height(...) et get_Width(...) de la classe IPicture mais cela ne change rien à la taille de mon image.
Merci encore pour ton aide.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 mars 2006 à 15:13
C'est clair que sans chargement préalable de COM, pas d'accès aux interfaces.
Je ne me souviens plus où on met cela dans MFC, au besoin va voir un exemple ADO avec MFC sur codeguru et tu verras comment ils initialisent COM.
Ah quel plaisir les surcouches...
cedekasme
Messages postés3Date d'inscriptionjeudi 14 août 2003StatutMembreDernière intervention15 mars 2006 15 mars 2006 à 15:04
Salut à vous!
En ce qui me concerne j'ai un problème avec "OleLoadPicturePath(...)" car il ne me modifie pas la variable pPic qui par consequent reste toujours à NULL et qui entraine le plantage du programme sur :
"pPic->get_Handle((UINT*)&hPic);"
Est-ce que quelqu'un pourrait me dire d'où cela pourrait provenir ? Est-ce le fait de ne pas avoir mis CoInitialize(0) qui pourrait en etre la source ? car comme j'utilise la MFC, je ne sais pas à quel endroit je suis susceptible de le mettre. J'ai essayé à plusieurs endroits différents mais cela ne marche toujours pas...
Merci de votre aide.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 15 déc. 2005 à 17:46
où je peux trouver <olectl.h> <ole2.h>
sjasmin
Messages postés6Date d'inscriptionmercredi 7 janvier 2004StatutMembreDernière intervention26 octobre 2005 24 oct. 2005 à 21:29
trop génial ce code :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 14 sept. 2004 à 21:00
C'est que tu dois avoir quelque part dans ton processus un truc qui declenche le chargement de COM sinon n'irait pas.
Pour assurer vu que c'est dans dll, mets un CoInitialize au debut dans DllMain.
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 14 sept. 2004 à 20:42
Le verification des retours est indispensable, je l'ai verifié a mes depends lol !!!
Par contre CoInitialize je lit dans la doc que c obligatoire mais moi je ne m'en suis pas servis et ca marche sans problemes, est ce que c'est parce je m'en sert dans une dll ????
cs_Boing
Messages postés15Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 3 janvier 2007 12 sept. 2004 à 21:05
la fonction output (générique printf) utilise wctomb et mbtowc pour effectuer la conversion ce qui revient au même de toute façon.
Par contre si tu utilises MFC (si si il en existe) tu peux utiliser %S avec CSting::Format.
Mais pour moi, c'est une question d'habitude et pas une religion ;o)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 sept. 2004 à 20:11
Je pense que sprintf doit appeler MultiByteToWideChar a son tour, faudra que je pense a verifier.
Tant qu'on peut on evite d'inclure stdio.h dans un prog windows, API fournit tout en mieux et bien plus rapide.
cs_Boing
Messages postés15Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 3 janvier 2007 12 sept. 2004 à 20:04
Bien, sinon, GDI+ fait aussi plein de choses et permet de traiter les bmp, gif, png, tiff et jpeg en lecture et écriture.
Autre petite remarque, j'ai bien noter que le code vient de codeguru, mais pour convertir entre ANSI et UNICODE, je trouve plus simple d'utiliser sprintf avec %S (S majuscule) qui permet de convertir simplement en gardant les options de précisions et autres.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 sept. 2004 à 14:14
Precisions:
Mettre CoInitialize(0); dans WinMain.
Verifer les retours sinon crash:
if(OleLoadPicturePath(...)) return 0;
get_Handle() doit aussi retourner 0 pour valide.
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 12 sept. 2004 à 07:51
18 févr. 2011 à 15:12
mais aucune image ne s'affiche dans mon CControl...
Quelqu'un aurait une piste ?
Merci
17 déc. 2008 à 05:15
plus besoin de se faire chier avec ce CreateCompatibleBitmap de mrd !!!!
5 sept. 2008 à 19:45
HBITMAP hvar = (HBITMAP) LoadImage(NULL,"C:\path\fichier.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
24 juin 2007 à 19:33
http://members.cox.net/scottheiman/bmglib.htm
elle est tres bien ! elle recupere un HBITMAP a partir de differents types (et bien d'autrs fonctions sur les images) assez bien :
HBITMAP hBitmap = CreateBitmapFromJPEGFile( "mon_image.JPG" );
voila qui devrait participer a la resolution des prblemes de types ;)
22 juin 2007 à 15:23
voila j'ai un petit soucis... je suis pas un pro de c++ et encore moins de VC. Je suis sous VC7 (.net) et j'ai un soucis en utilisant ce script:
je suis alle voir la msdn qui conseil d'ailleurs d'utilisez CoInitializeEx pour les nouveaux programmes, il y a un parametre de plus : http://msdn2.microsoft.com/en-us/library/ms695279.aspx
Donc je test le CoInitializeEx (et non ex), cela me renvoit un code de reussite... de meme pour la conversion du path, mais lors de la conversion de l'image ca plante.
J'ai lu qu'il y avait des problemes avec OleLoadPicturePath si l'image de type JP(E)G, BMP, GIF ne sont pas bien "structures" allez savoir pourquoi... en ce qui me concerne j'ai donc teste sur plusieurs images crees avec PAINT (me disant que de MS a MS ca devrait aller) en differents formats, et j'ai toujours une erreur.
Quelqu'un aurait il eu le meme probleme en utilisant ce script? si oui quelle solution avez vous mis en place?
Est ce que le fait de desactiver cette librairie : "libcmt.lib" joue un role, ou egalement le fait que je soit en Single Threaded (je penche plus pour cette raison)?
3 févr. 2007 à 12:41
Mais à quoi sert le CopyImage() ?
J'ai assayé d'afficher directement la bitmap hPic, et ça fonctionne très bien (en évitant une copie qui semble inutile).
15 mars 2006 à 16:41
15 mars 2006 à 16:20
J'ai corrigé quelques problèmes puis j'ai ajouté le fameux "CoInitialize(NULL)" dans l'initialisation de ma classe (logique lol), et cela marche!
Par contre, comment je peux faire pour que mon image ait une taille prédéfinie? En fait je me suis amusé avec get_Height(...) et get_Width(...) de la classe IPicture mais cela ne change rien à la taille de mon image.
Merci encore pour ton aide.
15 mars 2006 à 15:13
Je ne me souviens plus où on met cela dans MFC, au besoin va voir un exemple ADO avec MFC sur codeguru et tu verras comment ils initialisent COM.
Ah quel plaisir les surcouches...
15 mars 2006 à 15:04
En ce qui me concerne j'ai un problème avec "OleLoadPicturePath(...)" car il ne me modifie pas la variable pPic qui par consequent reste toujours à NULL et qui entraine le plantage du programme sur :
"pPic->get_Handle((UINT*)&hPic);"
Est-ce que quelqu'un pourrait me dire d'où cela pourrait provenir ? Est-ce le fait de ne pas avoir mis CoInitialize(0) qui pourrait en etre la source ? car comme j'utilise la MFC, je ne sais pas à quel endroit je suis susceptible de le mettre. J'ai essayé à plusieurs endroits différents mais cela ne marche toujours pas...
Merci de votre aide.
15 déc. 2005 à 17:46
24 oct. 2005 à 21:29
14 sept. 2004 à 21:00
Pour assurer vu que c'est dans dll, mets un CoInitialize au debut dans DllMain.
14 sept. 2004 à 20:42
Par contre CoInitialize je lit dans la doc que c obligatoire mais moi je ne m'en suis pas servis et ca marche sans problemes, est ce que c'est parce je m'en sert dans une dll ????
12 sept. 2004 à 21:05
Par contre si tu utilises MFC (si si il en existe) tu peux utiliser %S avec CSting::Format.
Mais pour moi, c'est une question d'habitude et pas une religion ;o)
12 sept. 2004 à 20:11
Tant qu'on peut on evite d'inclure stdio.h dans un prog windows, API fournit tout en mieux et bien plus rapide.
12 sept. 2004 à 20:04
Autre petite remarque, j'ai bien noter que le code vient de codeguru, mais pour convertir entre ANSI et UNICODE, je trouve plus simple d'utiliser sprintf avec %S (S majuscule) qui permet de convertir simplement en gardant les options de précisions et autres.
12 sept. 2004 à 14:14
Mettre CoInitialize(0); dans WinMain.
Verifer les retours sinon crash:
if(OleLoadPicturePath(...)) return 0;
get_Handle() doit aussi retourner 0 pour valide.
12 sept. 2004 à 07:51