Accueil > Forum > > > > Controles transparents ?
Controles transparents ?
vendredi 22 avril 2005 à 09:27:20 |
Controles transparents ?

Cako19
|
Bonjour, Qqun saurait-il s'il est possible de rendre un controle transparent et si oui comment ? Merci d'avance pour votre aide, Cako19
|
|
vendredi 22 avril 2005 à 12:38:41 |
Re : Controles transparents ?

DeAtHCrAsH
|
Yep, Il est tout a fait possible de le faire a condition que tu sois sous Windows 2000 minimum. Voila un bout de code qui rend une fenetre transparente. Tu n'as cas changer le handle passé en parametre a la fonction MySetLayeredWindowAttributes pour que la transparence s'applique a ton control.
#include <windows.h>
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
BYTE bAlpha=255,Anim=1;
typedef BOOL (WINAPI *SLWA_FUNC)(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);
BOOL MakeAlpha(HWND hwnd,BYTE alpha)
{
// Récupération ddu handle de User32.dll, puis de l'adresse de
// la fonction SetLayeredWindowAttributes dans cette Dll.
SLWA_FUNC MySetLayeredWindowAttributes;
HMODULE hUser32 = GetModuleHandle("USER32.DLL");
if (!hUser32) return FALSE;
MySetLayeredWindowAttributes = (SLWA_FUNC)GetProcAddress(hUser32,"SetLayeredWindowAttributes");
if (MySetLayeredWindowAttributes)
{
// Application du paramètre alpha sur la fenêtre
MySetLayeredWindowAttributes(hwnd,NULL,alpha,LWA_ALPHA);
// il est également possible de combiner le mode "Alpha" avec
// le mode transparent LWA_COLORKEY. Dans ce cas, toutes les parties
// de la fenêtre qui seront de la couleur 'crKey' seront transparentes.
// Il sera donc possible de cliquer à travers la fenêtre
//
// Exemples :
// MySetLayeredWindowAttributes(hwnd,0x00000000,alpha,LWA_ALPHA | LWA_COLORKEY);
// => Toutes les parties noires de la fenêtre seront transparentes
// Le reste aura un paramètre alpha
// MySetLayeredWindowAttributes(hwnd,0x00FFFFFF,NULL,LWA_COLORKEY);
// => toutes les parties blanches seront transparentes
// Le reste sera normal
return TRUE;
} else {
// Si pas Windows 2000 ou Windows XP, la fonction SetLayeredWindowAttributes
// n'existe pas, il est donc impossible d'appliquer le paramètre.
MessageBox(hwnd,"Impossible de passer la fenêtre en WS_EX_LAYERED","Erreur",MB_ICONERROR);
return FALSE;
}
}
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
long result = 0;
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CREATE:
if (MakeAlpha(hwnd,bAlpha))
SetTimer(hwnd,11111,10,NULL);
else
PostQuitMessage(0);
break;
case WM_CLOSE:
PostQuitMessage(0);
break;
case WM_TIMER:
MakeAlpha(hwnd,bAlpha);
if (Anim==0)
{
bAlpha+=1;
if (bAlpha>=255) Anim=1;
} else {
bAlpha-=1;
if (bAlpha<=0) Anim=0;
}
break;
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
BeginPaint(hwnd,&ps);
hdc = GetDC(hwnd);
GetClientRect(hwnd,&rect);
DrawText(hdc,"C'est t'y pas beau ça ?",23,&rect,DT_CENTER);
ReleaseDC(hwnd,hdc);
EndPaint(hwnd,&ps);
break;
default:
result = DefWindowProc(hwnd, message, wParam, lParam);
break;
}
return result;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX MyWC={ sizeof(WNDCLASSEX),CS_HREDRAW|CS_VREDRAW,MainWndProc,0L,0L,
hInstance, LoadIcon(NULL,IDI_APPLICATION),
LoadCursor(NULL, IDC_ARROW),
(HBRUSH) (COLOR_BTNFACE+1),
NULL,"MyWndClassEx",LoadIcon(NULL,IDI_APPLICATION)};
if(!RegisterClassEx(&MyWC)) return 0;
HWND hWndMain = CreateWindowEx(WS_EX_LAYERED,"MyWndClassEx","Fenêtre transparente", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,400,300, NULL,NULL,hInstance,NULL);
ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain);
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
} Shell
|
|
vendredi 22 avril 2005 à 14:01:27 |
Re : Controles transparents ?

Cako19
|
Merci beaucoup !!
En fait, si j'ai bien compris c'est la fonction MakeAlpha qui doit être appelée avec le handle de mon contrôle pour le rendre transparent. C'est ça ? Donc si je veux faire une dll pour l'utiliser dans un autre environnement, je dois juste exporter cette fonction ?
|
|
vendredi 22 avril 2005 à 14:44:35 |
Re : Controles transparents ?

Cako19
|
En exportant MakeAlpha, mon controle n'est pas transparent :(
|
|
lundi 25 avril 2005 à 15:09:02 |
Re : Controles transparents ?

Cako19
|
J'arrive à rendre transparente ma fenêtre en exportant MainWinProc mais je n'arrive pas à récupérer le handle de mes contrôles. Qqun saurait-il comment il faut faire svp ?
Merci d'avance,
Cako19
|
|
jeudi 28 avril 2005 à 11:27:11 |
Re : Controles transparents ?

Cako19
|
Réponse acceptée !
Bonjour,
Oui c'est encore moi !
Pensez vous que le code ci-dessus marche réellement avec des controles ? En effet, j'ai vu dans msdn que la fonction essentielle utilisée dans le code : SetLayeredWindowAttributes ne fonctionnait pas avec les enfants d'une fenêtre et donc sûrement pas avec les contrôles non ? Je cite :"Note that WS_EX_LAYERED cannot be used for child windows." Qu'en pensez vous ?
Merci pour votre aide,
Cako19
|
|
vendredi 28 juillet 2006 à 10:49:45 |
Re : Controles transparents ?

_Jonathan
|
salut a tous,
je cherche à rendre une image (voire n'importe quel controle : bouton, static,...) non transparente qui serait dans une fenetre transparente. Est-ce possible ? Comment faire ?
|
|
Cette discussion est classée dans : controles, transparents
Répondre à ce message
Sujets en rapport avec ce message
recupérer les controles d'une Boite de Dialogue [ par loC ]
salut,ju'aimerai pouvoir balayer tous les controles d'une boite de dialogue.ie : obtenir une liste de CWnd * contenant tous les controles.
coordonnées des controles ... [ par hotrod1 ]
bonjour à tous ! J'utilise une fenètre de dialogue visual c++, et je voudrais savoir s'il est possible de déplacer des objet de la fenetre pendant l'u
coordonnées des controles... [ par hotrod1 ]
bonjour à tous ! J'utilise une fenètre de dialogue visual c++, et je voudrais savoir s'il est possible de déplacer des objet de la fenetre pendant l'u
coordonnées des controles ... [ par hotrod1 ]
bonjour à tous ! J'utilise une fenètre de dialogue visual c++, et je voudrais savoir s'il est possible de déplacer des objet de la fenetre pendant l'u
coordonnées de controles .?... [ par hotrod1 ]
bonjour à tous ! J'utilise une fenètre de dialogue visual c++, et je voudrais savoir s'il est possible de déplacer des objet de la fenetre pendant l'u
CPropertyPage [ par sandrineStagiaire ]
Salut,J'ai deux controles actives X(de meme nature) qui sont sur deux onglets différents.A la premiere visualisation tout va bien. Les deux sont bons
Textes transparents [ par garslouche ]
Bonjour,je voudrais savoir comment on peut faire des CStatic (textes) qui aient un fond transparent.J'ai essayé d'utiliser CtlColor en faisant pDC->Se
Creer des controles sans MFC??? [ par Arkko ]
Salut, est ce quelquun pourrais me dire comment creer (ou placer) des controles(ex:textbox) sur une form SANS LES MFC ...merci@+ Arkko
copie d'un controle [ par didrocks ]
Salut!J'ai un peu recherché dans le forum et il ne semble pas avoir de réponse précise à ce type de question. Donc, je la pose:J'ai créé une boite de
Ajouter des controles sur chaque ligne d'une listbox? [ par titpeste ]
Bonjour,je developpe une application à l'aide de la MFC.J'ai une listbox et j'aurai besoin de permettre à l'utilisateur d'appliquer un traitement pour
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|