Accueil > > > AFFICHAGE D'IMAGES JPG AVEC IPICTURE EN C
AFFICHAGE D'IMAGES JPG AVEC IPICTURE EN C
Information sur la source
Description
A la demande de BruNews, et en réponse à une question du forum, voici un petit code source en C montrant comment afficher une image JPG en utilisant l'interface COM IPicture.
Source
- #include <windows.h>
- #include <olectl.h>
-
- // Variables globales:
- char chemin[260];
- WNDPROC OldStaticProc;
-
- // Fonction d'affichage de l'image JPG:
- void AfficheImage(char* path, HWND hwndcible)
- {
- // Variables:
- IPicture* pic;
- HRESULT hres;
- HDC hdc;
- RECT rect;
- int hauteur, largeur;
- WCHAR wpath[260];
- // Convertir le chemin en UNICODE:
- MultiByteToWideChar(0,0,path,-1,wpath,260);
- // Ouverture de l'image:
- hres = OleLoadPicturePath(wpath, 0,0, 0, &IID_IPicture, (void**)&pic);
- // Obtenir le HDC du controle cible:
- hdc=GetDC(hwndcible);
- // Obtenir la zone cliente du controle cible:
- GetClientRect(hwndcible,&rect);
- // Obtenir la largeur et la hauteur de l'image:
- hres=pic->lpVtbl->get_Width(pic,&largeur);
- hres=pic->lpVtbl->get_Height(pic,&hauteur);
- // Afficher l'image:
- hres=pic->lpVtbl->Render(pic,hdc,0,0,rect.right,rect.bottom,0,hauteur,largeur,-hauteur,0);
- // Libérer le HDC du controle cible:
- ReleaseDC(hwndcible,hdc);
- //Libérer l'interface IPicture:
- pic->lpVtbl->Release(pic);
- }
-
- // Procédure de sous-classement de notre Static:
- LRESULT WINAPI StaticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- // Traitement du message WM_PAINT:
- if(message==WM_PAINT)
- {
- PAINTSTRUCT ps;
- BeginPaint(hwnd,&ps);
- // Appeler la fonction d'affichage de l'image:
- AfficheImage(chemin,hwnd);
- EndPaint(hwnd,&ps);
- return 0;
- }
- // Appeler la procédure par défaut des Statics:
- return CallWindowProc(OldStaticProc, hwnd, message, wParam, lParam);
- }
-
- // Procédure de notre boite de dialogue:
- BOOL WINAPI DialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
- {
- // Variables:
- static HWND hStatic,hQuitter;
-
- switch(message)
- {
- case WM_INITDIALOG:
- // Former le chemin complet de l'image:
- GetCurrentDirectory(260,chemin);
- lstrcat(chemin,"\\image.jpg");
- // Donner un titre à la boite de dialogue:
- SetWindowText(hDlg,"Affichage d'images JPG avec IPicture");
- // Créer les controles:
- hQuitter=CreateWindow("BUTTON","Quitter",WS_VISIBLE | WS_CHILD ,424,130,60,20,hDlg,0,0,0);
- hStatic=CreateWindowEx(0,"STATIC","",WS_VISIBLE | WS_CHILD | SS_SUNKEN,10,10,400,260,hDlg,0,0,0);
- // Sous-classer le Static:
- OldStaticProc=(WNDPROC)SetWindowLong(hStatic,GWL_WNDPROC,(LONG)StaticProc);
- // Changer la police du bouton "Quitter":
- SendMessage(hQuitter,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
- break;
-
- case WM_COMMAND:
- // Fermer la boite de dialogue si clic sur "Quitter":
- if((HWND)lParam==hQuitter) EndDialog(hDlg,0);
- break;
-
- case WM_CLOSE:
- // Fermer la boite de dialogue:
- EndDialog(hDlg,0);
- break;
-
- default:
- break;
- }
- return 0;
- }
-
- int WINAPI WinMain(HINSTANCE hinst, HINSTANCE prev, LPSTR cmd, int show)
- {
- // Déclaration d'une structure DLGTEMPLATE:
- LPDLGTEMPLATE lpdt;
- // Initialiser la librairie COM pour notre application:
- CoInitialize(0);
- // Allouer de la mémoire pour notre structure DLGTEMPLATE:
- lpdt = ( LPDLGTEMPLATE) GlobalAlloc(GPTR, 512);
- if (!lpdt) return 1;
- // Définir les styles et les dimensions de la boite de dialogue:
- lpdt->style = WS_SYSMENU | WS_MINIMIZEBOX | DS_CENTER ;
- lpdt->x = 0; lpdt->y = 0; lpdt->cx =250; lpdt->cy = 152;
- // Lancer la boite de dialogue:
- DialogBoxIndirectParam(0,lpdt,0,(DLGPROC)DialogProc,(LPARAM) 0);
- // Libérer la mémoire allouée pour notre structure DLGTEMPLATE:
- GlobalFree((HGLOBAL) lpdt);
- // Libérer la librairie COM:
- CoUninitialize();
- return 0;
- }
#include <windows.h>
#include <olectl.h>
// Variables globales:
char chemin[260];
WNDPROC OldStaticProc;
// Fonction d'affichage de l'image JPG:
void AfficheImage(char* path, HWND hwndcible)
{
// Variables:
IPicture* pic;
HRESULT hres;
HDC hdc;
RECT rect;
int hauteur, largeur;
WCHAR wpath[260];
// Convertir le chemin en UNICODE:
MultiByteToWideChar(0,0,path,-1,wpath,260);
// Ouverture de l'image:
hres = OleLoadPicturePath(wpath, 0,0, 0, &IID_IPicture, (void**)&pic);
// Obtenir le HDC du controle cible:
hdc=GetDC(hwndcible);
// Obtenir la zone cliente du controle cible:
GetClientRect(hwndcible,&rect);
// Obtenir la largeur et la hauteur de l'image:
hres=pic->lpVtbl->get_Width(pic,&largeur);
hres=pic->lpVtbl->get_Height(pic,&hauteur);
// Afficher l'image:
hres=pic->lpVtbl->Render(pic,hdc,0,0,rect.right,rect.bottom,0,hauteur,largeur,-hauteur,0);
// Libérer le HDC du controle cible:
ReleaseDC(hwndcible,hdc);
//Libérer l'interface IPicture:
pic->lpVtbl->Release(pic);
}
// Procédure de sous-classement de notre Static:
LRESULT WINAPI StaticProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// Traitement du message WM_PAINT:
if(message==WM_PAINT)
{
PAINTSTRUCT ps;
BeginPaint(hwnd,&ps);
// Appeler la fonction d'affichage de l'image:
AfficheImage(chemin,hwnd);
EndPaint(hwnd,&ps);
return 0;
}
// Appeler la procédure par défaut des Statics:
return CallWindowProc(OldStaticProc, hwnd, message, wParam, lParam);
}
// Procédure de notre boite de dialogue:
BOOL WINAPI DialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
// Variables:
static HWND hStatic,hQuitter;
switch(message)
{
case WM_INITDIALOG:
// Former le chemin complet de l'image:
GetCurrentDirectory(260,chemin);
lstrcat(chemin,"\\image.jpg");
// Donner un titre à la boite de dialogue:
SetWindowText(hDlg,"Affichage d'images JPG avec IPicture");
// Créer les controles:
hQuitter=CreateWindow("BUTTON","Quitter",WS_VISIBLE | WS_CHILD ,424,130,60,20,hDlg,0,0,0);
hStatic=CreateWindowEx(0,"STATIC","",WS_VISIBLE | WS_CHILD | SS_SUNKEN,10,10,400,260,hDlg,0,0,0);
// Sous-classer le Static:
OldStaticProc=(WNDPROC)SetWindowLong(hStatic,GWL_WNDPROC,(LONG)StaticProc);
// Changer la police du bouton "Quitter":
SendMessage(hQuitter,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
break;
case WM_COMMAND:
// Fermer la boite de dialogue si clic sur "Quitter":
if((HWND)lParam==hQuitter) EndDialog(hDlg,0);
break;
case WM_CLOSE:
// Fermer la boite de dialogue:
EndDialog(hDlg,0);
break;
default:
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE prev, LPSTR cmd, int show)
{
// Déclaration d'une structure DLGTEMPLATE:
LPDLGTEMPLATE lpdt;
// Initialiser la librairie COM pour notre application:
CoInitialize(0);
// Allouer de la mémoire pour notre structure DLGTEMPLATE:
lpdt = ( LPDLGTEMPLATE) GlobalAlloc(GPTR, 512);
if (!lpdt) return 1;
// Définir les styles et les dimensions de la boite de dialogue:
lpdt->style = WS_SYSMENU | WS_MINIMIZEBOX | DS_CENTER ;
lpdt->x = 0; lpdt->y = 0; lpdt->cx =250; lpdt->cy = 152;
// Lancer la boite de dialogue:
DialogBoxIndirectParam(0,lpdt,0,(DLGPROC)DialogProc,(LPARAM) 0);
// Libérer la mémoire allouée pour notre structure DLGTEMPLATE:
GlobalFree((HGLOBAL) lpdt);
// Libérer la librairie COM:
CoUninitialize();
return 0;
}
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
JPG dans une DialogBox avec les MFC [ par ZeGot ]
Bonjour,Je cherche à afficher une image JPG dans une dialog box (J'utilise les MFC), cette image devant pouvoir être changée par le programme (Ex : L'
Jpg? [ par JediMaster ]
Salut a tous je voudrais savoir comment charger une image .jpg sur une surface directdraw. il existe une routine ou faut se la faire
transformer une image pgm (non compressé) en jpg [ par cartouh ]
salut,je suis en train de continuer un programme de traitement d'image avec des capteurs.le mec travaillé avec des images pgm: format d'image non comp
Lire les propriétés d'un fichier JPG [ par LucChirac ]
Lorsque je prends une photo avec mon numérique, l'appareil insère dans le fichier des informations comme la longueur de la focale, la vitesse d'obtura
algo JPG->BMP [ par MoDDiB ]
Il n'y aurais pas un site qu'y explikerait l'algo pour transformer un jpg en bmp?? ca sré sympataoche de me dire ou ^^merci !(les sources du concours
pb directX + jpg [ par JediMaster ]
j'avais deja poser la question mais au cas ou un pros avait pas vu comment utiliser des images jpg plutot que bmp(volumineux)et peu etre que quelqu'un
A l'aide evidemment [ par oRTEEZ ]
Bonjourj'ai vraiement besoin d'aide.Voila je travaille sur un prog capable d'ouvrir de .PIC et des .JPG puis de dessiner un cadre dessue et enfin d'ec
char* -> string [ par oRTEEZ ]
Voila tout est dans le sujet.En fait j'ai un nom de fichier dans un buffer et j'aimerai ajouter des caractere au nom.ex: *buffer = "voila.jpg"apres tr
Direct draw, bitmaps et .jpg [ par TigreRouge ]
SAlut tt le mondeJ'ai besoin d'un petit coup de main concernant directdrawSur pas mal de sites, j'ai trouvé comment on gérait les bitmaps (.bmp) avec
Patch() [ par JCpp ]
Je cherche un programme pour avoir le fichier avec l'extension.J'en en avais trouvé un sur ce site, je ne le retrouve plus.Le programme est très simpl
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|