Accueil > Forum > > > > Hwnd
Hwnd
lundi 30 mai 2005 à 15:01:33 |
Hwnd

T_Mehdi
|
salut a tous .
bon j'ai realiser une fonction qui permet douvrir des fichier bmp et les affichier sur un hwnd preci.
le prob est que quand je reduit ou je cache la fenetre et je le reaffiche l'image ce supprime automatiquement de la fenetre.
| CODE | int Load_Bmp(HWND WinHandle,char* File); struct BMP_INFO { int height; int width; HBITMAP hbmp; int bitperpixel; };
BMP_INFO bmp_info; HBITMAP bit; BITMAP bitmap; int Load_Bmp(HWND WinHandle,char* File) {
bit= (HBITMAP) LoadImage(NULL,File, IMAGE_BITMAP,0,0, LR_DEFAULTSIZE|LR_LOADFROMFILE); GetObject(bit, sizeof(BITMAP), &bitmap); //Recupere les info bmp_info.hbmp =bit; bmp_info.height = bitmap.bmHeight; bmp_info.width=bitmap.bmWidth; bmp_info.bitperpixel = bitmap.bmBitsPixel; int w; int h; HDC hdc; HDC bit_dc; hdc = GetDC( WinHandle ); bit_dc = CreateCompatibleDC(hdc); SelectObject(bit_dc, bmp_info.hbmp); for (h = 0;h <bmp_info.height;h++) { for (w = 0;w < bmp_info.width; w++) { //Boucle pour avoir pixel par pixel de l'image SetPixel(hdc,w,h,GetPixel(bit_dc,w,h)); //Applique les nouvelle couleur if (w > bmp_info.width-1) break; //Pour ne pas dessiner meme les bordure;) } if (h > bmp_info.height-1) break; //Meme Chose } ReleaseDC( WinHandle, bit_dc ); ReleaseDC( WinHandle, hdc ); DeleteDC(bit_dc); DeleteDC(hdc); DeleteObject(bit);//Supprime l'obj return 1; } |
|
|
lundi 30 mai 2005 à 15:34:26 |
Re : Hwnd

vecchio56
|
Réponse acceptée !
Bah oui tes SetPixel/GetPixel sont à faire dans le WM_PAINT de la fenêtre
Par contre, la méthode n'est pas bonne, tu devrais créer une HBITMAP,
la sélectionner dans un DC mémoire (tu le fais une seule fois) puis
dans WM_PAINT utiliser BitBlt, c'est beaucoup plus rapide.
PS: un DC obtenu avec getDC est détruit avec ReleaseDC et non DeleteDC
|
|
lundi 30 mai 2005 à 18:24:56 |
Re : Hwnd
|
lundi 30 mai 2005 à 19:24:04 |
Re : Hwnd
|
lundi 30 mai 2005 à 19:25:26 |
Re : Hwnd

SnOOpss
|
En resumé ton code ne marche qu'une fois !!
Quand la fentre est reactualisé ton code n'est pas reexecuté
Il devrait etre dans le message WM_PAINT ( a chaque affichage ou reactualisation de ta fentre c le message a traiter)
Ensuite tu devrait plutot creer UN seul HBITMAP ( et une seule fois)
dans WM_CREATE par exemple et c'est lui que tu reaaffiche dans le
message WM_PAINT pour ne pas avoir a tout refaire a chaque fois.
Tu as une raison particuliere pour utiliser setpixel plutot que BitBlt ???
|
|
lundi 30 mai 2005 à 19:33:29 |
Re : Hwnd

SnOOpss
|
Un exemple
HBITMAP hbmp = (HBITMAP)LoadImage(0,"c://image.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
case WM_PAINT:
HDC hdc;
hdc = GetWindowDC(hwnd);
BITMAP bmp;
GetObject(hbmp, sizeof(BITMAP), (LPSTR)&bmp);
HDC hdcBmp;
hdcBmp = CreateCompatibleDC(hdc);
SelectObject(hdcBmp, hbmp);
BitBlt(hdc,0,0, bmp.bmWidth,bmp.bmHeight, hdcBmp, 0,0, SRCCOPY);
DeleteDC(hdc);
DeleteDC(hdcBmp);
}
Mais cet exemple n'est pas au top car WM_PAINT donne deja le bon HDC grace a
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
|
|
lundi 30 mai 2005 à 19:41:27 |
Re : Hwnd

vecchio56
|
SnOOpss> Oui, si tu
ne veux pas utiliser BeginPaint, il faut au moins faire
ValidateRect(hWnd, 0), sinon le message WM_PAINT va continuer à arriver
sans arrêt.
Et puis LoadBitmap donne un HBITMAP, pas besoin d'appeler donc GetObject.
Et sutout, on libère hdc avec ReleaseDC!
|
|
lundi 30 mai 2005 à 20:57:13 |
Re : Hwnd
|
mardi 31 mai 2005 à 17:51:11 |
Re : Hwnd

SnOOpss
|
oui vecchio56 en fait
j'ai vu qu'il y avait pas mal d erreur moi meme en fait c'etait une de
mes vielles sources que j'ai simplement copier/coller mais par contre
le coup du ReleaseDC je crois que je fait encore l erreur et ca
m'etonne que le prog ne plante pas au bout d un moment (surtout dans
les boucles) si les DC ne sont jamais libérés!!
|
|
Cette discussion est classée dans : hdc, bmp, info, bitmap, bit
Répondre à ce message
Sujets en rapport avec ce message
copier un bloc de bit dans un bitmap [ par Adeon ]
salut ! j'aimerai prendre un rectangle de bit d'un bitmap pour le mettre dans un nouvo bitmap.voila mon prog qui ne marche pa :je cree deux DC :HDC hd
Modification de fichier BMP [ par titio ]
Bonjour,Je souhaite afficher des images bmp, tout en ayant la possibilité de modifier ce fichier. Pour cela, je le charge en memoire, et souhaite donc
pr d'objet GDI qui augmente, help [ par gege1024 ]
CPaintDC hdc(this);HBITMAP bit;BITMAP bitmap;CRect rect;GetClientRect(&rect); bit= (HBITMAP) LoadImage (NULL,fic_img_abs,IMAGE_BITMAP,0,0,LR_DEFAULTS
chargement dynamique d'image (bitmap ?) [ par Gendal67 ]
Bonsoir,J'aimerai savoir si une application peut charger autre chose qu'une image bmp comme une image jpg....genre comme :BMP BITMAP DISCARDABLE "lol.
problème de chargement de bitmap [ par Batman60 ]
bonjour y a pas moyen de charger des bitmaps avec la fonction :gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight, GL_RGB, GL_UNSIGNED_
HDC d'une BITMAP ? [ par unrealgun ]
Bonjour, depuis quelques jours je cherche comment obtenir le HDC d'une bitmap. je sais pas si c'est possible. J'ai essayé GetDC(hbmp) puis GetPixel po
afficher data BMP dans HWND [ par supergrey ]
Bonjour, dans mon programme j'ai récupérer les données d'une bitmap dans un tableau de char, j'ai modifier certaine valeur (edition bitmap) je voudrai
redimenssion image avec hbitmap [ par glipper ]
bonjour,j'ai reussi à charger une image depuis un fichier, et la faire apparaître dans un boutons (dans une dialogbox). J'ai donc procédé comme ceci :
Bitmaps splitté qui s'affichent a l'envers [ par milhandril ]
Je suis actuellement sur un projet dont une parti necessite un petit editeur de map en 2D. Je prend un bitmap que je "découpe" en Tile de 32*32 (en fa
Probléme de compilation [ par makina0711 ]
Bonjour a tous j'ai cette source pour ouvrire mon bmp mais a cette ligne il y a une ereure: DrawState(hdc,NULL,NULL,(long)hBmp,NULL,10,10,0,0,DST_BI
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|