Couleur tranparente sur une fentre

Signaler
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Salut tout le monde !!
Voila g crée une fentre classique je charge un bitmap dedans et je cherche un moyen de rendre la barre, le cadre et le fond transparent !!
Sans utiliser les layer de XP !!
Je commence a me demander si ce n'est pas impossible et ke je devrais tenter avec un dialog plutot ( ca g deja vu faire je sé ke c possible )
Merci !!!

7 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Si tu arrive a le faire avec un dialog ce sera déja bien
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

C bon g trouvé le systeme, e n fait je faut une window classique et j utlilise les regions pour la decouper mais now j'ai un nouvo probleme j'arrive plus a charger des bitmaps, pourtant j'utlise tjour cette commande et j'ai jamais de problemes!
hBitmap = (HBITMAP) LoadImage( NULL, "D:\bureau\test\Bricks.bmp", IMAGE_BITMAP, 8, 8, LR_LOADFROMFILE);

Avec des NULL partout je voit vriament pas pourkoi ca ne mar ce pas ????
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

C bon j'ai tout essayé pas moyen de faire marcher le chargment de bmp. Deux ou 3 expliquation : Ce prog est une dll pour mirc !!

int __stdcall WINAPI Image (HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) {

[...]
MSG msg;
msg.message = 0;


while(GetMessage(&msg,hWnd,0,0)==TRUE)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
[..]

}

LRESULT CALLBACK MainProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam)
{

static HBITMAP hBitmap ;
HINSTANCE hInstance ;
HDC hDC;
HDC hdcMem ;
PAINTSTRUCT paintst;
switch (mes)
{
case WM_CREATE:

hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
hBitmap = (HBITMAP)LoadImage(hInstance,"D:\bureau\test\bmp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (!hBitmap) { MessageBox (NULL, "Erreur1", "ee", MB_OK); }

return 0 ;
case WM_PAINT:

hDC=BeginPaint(hWnd,&paintst);

// hBitmap = (HBITMAP)LoadImage(hInstance,"bmp.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

if (!hBitmap) {
MessageBox (NULL, "pas de bitmap eereu 2", "ee", MB_OK);
}
else {

hdcMem = CreateCompatibleDC(hDC);
SelectObject (hdcMem, hBitmap) ;

BitBlt (hDC, 20, 20, 8, 8, hdcMem, 0, 0, SRCCOPY) ;

DeleteDC (hdcMem) ;
}

EndPaint(hWnd,&paintst);

return 0;
// case WM_DESTROY:
// PostQuitMessage(0);
// return 0;
default:
return DefWindowProc(hWnd, mes, wParam, lParam);
}
}

Et j'ai a chake fois les 2 message d'erreur ( les boites ) !!!!
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

G enfin trouvé le probleme a tatons il me fallait mettre img = "D:\\bureau\\test\\bmp.bmp"; a la place de img = "D:\bureau\test\bmp.bmp";
Ceci dit je ne comprend tjours pas pourquoi !!!!
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
parce que le caractère \ s'écrit \par exemple \n = retour à la ligne, \t tabulation
la tu n'a pas eu de change car tous les caractères que tu as mais existent, mas si tu mets un \i par exemple, le compilo doit mettre un warning
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

lol
merci !! Kan je pense que g passé une semaine a essayer toute les combinaison de fonction sans resultat ( normal j utilisais tjour le meme chemin d'accés ). En tout cas ca me servira pour le futur !!
Par contre la g encore un petit probleme j'arive a decouper ma fenetre grace a un SetWindowRgn mais kan je la reaffiche dans la fentre g un decalage, il me faudrais supprimer la barre e titre pour le moment je commence juste a chercher ( g testé WS_CAPTION sans sesultat et la je vais essayer avec WS_DLGFRAME qui devrait marcher mais je ne pense pas que c la methode la plus simple et la plus legere une fois compilé ( Et vu ke c prog est une dll je cherche la mathose la plus legere )
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Je v finir par faire un post de 10 message a moi tout seul !!
Alors ca yé g trouvé cété WS_POPUP, ca marche maintenant mais je suis obligé de changer les flags apres la creation de la fentre, et je ne sais pas pourkoi !!

hWnd=CreateWindow(
// NULL,
"std",
"ee",
WS_POPUP ,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);

ne marche pas tandis que

hWnd=CreateWindow(
// NULL,
"std",
"ee",
NULL ,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);


SetWindowLong(hWnd, GWL_STYLE , WS_POPUP);

Je pense que c encore un truc a la con, mais je trouve pas ce que c'est ?????????????