begin process at 2012 05 29 15:05:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

passer de HICON en HBITMAP, pour menu


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

passer de HICON en HBITMAP, pour menu

vendredi 25 juin 2004 à 12:47:46 | passer de HICON en HBITMAP, pour menu

youpiyoyo


j'aurai besoin de passer un HICON en HBITMAP, pour pouvoir afficher une icone dans un menu j'ai testé avec copyimage sans succes.....

voici le bout de code

j'ai d'abord testé ca avec un cast sans succes
HBITMAP h_Bit = (HBITMAP) LoadImage
(
(HINSTANCE)hInstance, // handle of the instance that contains the image
(LPCTSTR)MAKEINTRESOURCE(IDI_ICO_MAIN), // name or identifier of image
(UINT)IMAGE_ICON, // type of image
(int)GetSystemMetrics(SM_CXMENUCHECK), // desired width
(int)GetSystemMetrics(SM_CYMENUCHECK), // desired height
(UINT)LR_SHARED // load flags
);

h_bit n'est po NULL mais fonctionnent po pour un SetMenuItemBitmaps(hMenuPopup,ID_POPUP_ABOUT,MF_BYCOMMAND,h_Bit,h_Bit);

donc...
ensuite
j'ai testé ca

HBITMAP h_Bit = (HBITMAP) CopyImage(LoadImage
(
(HINSTANCE)hInstance, // handle of the instance that contains the image
(LPCTSTR)MAKEINTRESOURCE(IDI_ICO_MAIN), // name or identifier of image
(UINT)IMAGE_ICON, // type of image
(int)GetSystemMetrics(SM_CXMENUCHECK), // desired width
(int)GetSystemMetrics(SM_CYMENUCHECK), // desired height
(UINT)LR_SHARED // load flags
),IMAGE_BITMAP,(int)13,(int)13,0);

veut pas convertir un IMAGE_ICON en IMAGE_BITMAP, avec getlasterror, il me renvoi 6....


please HELP me!!!!
vendredi 25 juin 2004 à 19:10:40 | Re : passer de HICON en HBITMAP, pour menu

ShareVB

salut

tu peux utiliser GetIconInfo :

HICON icon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICO_MAIN));
ICONINFO iconinfo={0};
BOOL ret = GetIconInfo(icon,&iconinfo);
HBITMAP iconbitmap = iconinfo.hbmColor;
SetMenuItemBitmaps(hMenuPopup,ID_POPUP_ABOUT,MF_BYCOMMAND,iconbitmap ,iconbitmap);

au cas ou le resultat ne serait pas satisfaisant, il est aussi simple de convertir ton icone en bitmap et de la mettre en ressource directement...

voilà

ShareVB
lundi 28 juin 2004 à 11:23:44 | Re : passer de HICON en HBITMAP, pour menu

youpiyoyo


genial tu me sauve la vie, je te remercie.........

en revanche juste une derniere petite chose, a mon avis pour faire un truc bien il fodrai faire un AND ou XOR sur le mask et l'ico car


ca marche mais l'icon passer en bitmap est afficher noir tout autour du bitmap

comment pourait ton faire pour juste garder l'ico un AND entre iconinfo.hbmColor et iconinfo.hbmMask

merci de ta réponse
mardi 29 juin 2004 à 17:41:38 | Re : passer de HICON en HBITMAP, pour menu

ShareVB

salut

alors la il faut utiliser :
- GetObject pour obtenir des infos sur la bitmap et le masque (structure BITMAP)
- GetBitmapBits pour obtenir les données de la bitmap et du masque (cbBuffer=bmWidth * bmHeight * bmWidthBytes)
- tu fais un AND ou XOR entre les deux buffers et tu mets le résultat dans le buffer de la bitmap
- SetBitmapBits pour enregistrer les données dans le bitmap
(cbBuffer=bmWidth * bmHeight * bmWidthBytes) avec le buffer du bitmap

sans garantie... (sinon le mieux c encore de mettre tes icones en bitmap dans les ressources... moins de traitement)

sinon tous les handles que tu crées LoadIcon doivent être supprimer quand tu n'en as plus besoin...

voilà

ShareVB
mardi 29 juin 2004 à 18:03:32 | Re : passer de HICON en HBITMAP, pour menu

youpiyoyo

t sur ke je doit faire ca car j'ai deja le mask bitmap et le bitmap....

iconinfo.hbmColor et le mask: iconinfo.hbmMask, donc le AND ou le XOR doit se faire mais je sais po comment je pense avec bitblit, mais je n'y suis po arriver ca marche po...

kan a mettre les ico en ressource est-ce k'il peut les mettre de façon permanente??? si oui cela m'interesse tres fortement de savoir komment....

si c possible je m'aventurerai a creer une DLL ki stocks les icos ou les bitmaps....

encore une fois je te remercie

je vais tester et si je trouve je te fais signe....
mardi 29 juin 2004 à 19:44:13 | Re : passer de HICON en HBITMAP, pour menu

youpiyoyo


voila j'y suis arriver j'ai fais ca..:


HICON icon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICO_MAIN));
ICONINFO iconinfo={0};
BOOL ret = GetIconInfo(icon,&iconinfo);
HBITMAP iconbitmap = iconinfo.hbmColor, iconbitmapmask=iconinfo.hbmMask;

BITMAP bmpInfo;
GetObject(iconbitmap,sizeof(BITMAP),&bmpInfo);


HDC hDC=GetDC(hWnd);
HDC hdc_iconbitmap=CreateCompatibleDC(hDC);
HDC hdc_iconbitmapmask=CreateCompatibleDC(hDC);
ReleaseDC(hWnd, hDC);

HBITMAP oldbmphdc=(HBITMAP) SelectObject(hdc_iconbitmap, iconbitmap);
HBITMAP oldbmphdcmask=(HBITMAP) SelectObject(hdc_iconbitmapmask, iconbitmapmask);

BitBlt(hdc_iconbitmap,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,hdc_iconbitmapmask,0,0,SRCINVERT);

HBITMAP h_Bit = (HBITMAP) CopyImage(iconbitmap,IMAGE_BITMAP,(int)GetSystemMetrics(SM_CXMENUCHECK),(int)GetSystemMetrics(SM_CYMENUCHECK),0);


SetMenuItemBitmaps(hMenuPopup,ID_POPUP_ABOUT,MF_BYCOMMAND,h_Bit ,h_Bit);



je te remercie pour tous car sans toi j'y serais po arriver.....


Cette discussion est classée dans : int, image, of, bit, hbitmap


Répondre à ce message

Sujets en rapport avec ce message

passer d'un widget a une autre structure [ par khaledtaib ] bonjourj' ai un petit programme de traitement d'image en language C, que je veux lui creer une interface graphique en GTK+.ce programme doit afficher pb de retour( du tableau) de ma fonction [ par airwann ] bonjour,j ai un problème comment dois je modifier l'entête de ma fonction pour recupérer le tableau de structure 3 d alloué dynamiquementmerci d avanc transformer un tableau 2d en image bitmap [ par gyzmo1 ] Bonjour a tous, voilà mon problème, je suis en train de mettre en place une méthode de comparaison de signature manuscrites. Cette méthode s applique need help_API - debutant. [ par JimyRyan ] j'ai cree un progamme qui affiche une image (stoquee dans un fichier .bmp), et une phrase (lu a partir d'un fichier TXT), j'ai deux problemes : une fo Afficher une image avec gtkmm [ par naika585 ] Bijour tt l'monde !Je developpe une interface avec gtkmm.Mon pb est le suivant : je veux afficher une image avec gtkmm, mais sans passer par le nom du Decouper un gos bmp en plusieur petit (par rapport au handle) ???? [ par SnOOpss ] Bonjour tout le monde !!Voila en fait pr un RPG mon moteur 2d utilise le procedure suivantefichierbmp[0] = LoadABitmap("wall.bmp");avec HBITMAP LoadAB Afficher une image dans une fenetre [ par TheMalrok ] LOj'utilise Devc++ et je souhaite afficher dans une fenetre win32 une image. J'ai un truc du styleHBITMAP hBitmap;HINSTANCE hInstance = (HINSTANCE)Get HBITMAP + resize [ par Manson ] Salut a tous,voila, je voudrais faire une fonction, si elle n'existe pas deja,a laquelle je passe un HBITMAP, une largeur et une hauteur, et elle me r probleme avec allegro en C [ par boponfire ] je cite l'aide d'allegro : "int d_icon_proc(int msg, DIALOG *d, int c); C'est un boutton image, la couleur fg est utlisee pour les lignes dessinees lo probleme SKD [ par Arnaud16022 ] helloje suis sur VC6 et je voudrais charger des modeles md2 sous openGL. que faire? Évidemment un petit tour chez Digiben!! (bon je sais qu'il existe


Nos sponsors


Sondage...

Comparez les prix

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 : 0,718 sec (3)

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