Bonjour j'aurais aime pouvoir donner a l'une de mes fenetre ce genre d'effet :
Auriez vous une idee, j'ai cherche sur CodeProject et CodeGuru mais je trouve des fenetre avec une transparence totale. Or ce n'est pas ce que je veux.
Bonjour j'aurais aime pouvoir donner a l'une de mes fenetre ce genre d'effet :
Auriez vous une idee, j'ai cherche sur CodeProject et CodeGuru mais je trouve des fenetre avec une transparence totale. Or ce n'est pas ce que je veux.
salut,
tu as vu ce post:
http://www.developpez.net/forums/vie...052238#2052238
il faut jouer avec l'avant dernier parametre de SetLayeredWindowAttributes
pour regler l'opacité.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Oui je l'avais vu mais je croyais que cela ne fonctionnait que sous win2000 or je suis sou XP.
Le probleme c'est que je ne trouve pas ca : WS_EX_LAYERED, de meme que SetLayeredWindowAttributes Ou est-ce defini ?
si tu es en VC6 ,il faut mettre a jour le SDK ...
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
pourquoi ? c'est pas tres compliqué .
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Disons que je ne peux pas mettre le sdk a jour sur mon PC, question de compatibilite avec mes collegues lorsque l'on doit echanger des DLL en version debug
un truc comme ça devrait faire l'affaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 typedef BOOL (WINAPI *lpfnUpdateLayeredWindow)( HWND hWnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags ); typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)( HWND hwnd, COLORREF crKey, BYTE xAlpha, DWORD dwFlags ); static lpfnUpdateLayeredWindow g_lpfnUpdateLayeredWindow = NULL; static lpfnSetLayeredWindowAttributes g_lpfnSetLayeredWindowAttributes = NULL; BOOL InitLayeredWindows() { if( g_lpfnUpdateLayeredWindow == NULL ) { HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL")); g_lpfnUpdateLayeredWindow = (lpfnUpdateLayeredWindow)GetProcAddress ( hUser32, _T("UpdateLayeredWindow") ); g_lpfnSetLayeredWindowAttributes = (lpfnSetLayeredWindowAttributes)GetProcAddress ( hUser32, _T("SetLayeredWindowAttributes") ); return g_lpfnUpdateLayeredWindow != NULL ? TRUE:FALSE; } return TRUE; } // utilisation. g_lpfnSetLayeredWindowAttributes(GetSafeHwnd(), RGB(0xFF, 0, 0xFF), m_nAlpha, ULW_ALPHA);![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Ok je vais essayer cela.
Par contre deux questions:
- je ne trouve pas m_nAlpha, je definis cela comment, de meme pour ULW_ALPHA.
- La fonction g_lpfnSetLayeredWindowAttributes, je l'appelle dans le OnInitDialog ?
re,
m_nAlpha c'est ton indice d'opacité .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #define ULW_COLORKEY 0x00000001 #define ULW_ALPHA 0x00000002 #define ULW_OPAQUE 0x00000004
oui apres tu fonctionnes comme dans ce post:
http://www.developpez.net/forums/vie...052238#2052238
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Ok je comprends mieux, bon ben je vais essayer cela tout de suite![]()
Bon,
dans le OnInitDialog, je fais cela :
et dans OnCtrlColor:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 m_pBrush= new CBrush; m_pBrush->CreateSolidBrush(RGB(187,221,255)); ModifyStyleEx(0,WS_EX_LAYERED); //SetLayeredWindowAttributes(m_hWnd,RGB(187,221,255),180,LWA_ALPHA); g_lpfnSetLayeredWindowAttributes(GetSafeHwnd(), RGB(0xFF, 0, 0xFF), 180, ULW_ALPHA);
mais mon compilateur ne connait pas WS_EX_LAYERED. Si je retire la lligne ModifyStyleEx(0,WS_EX_LAYERED); j'ai une exception windows.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 HBRUSH CToDoManagerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired return static_cast<HBRUSH>(*m_pBrush); }
EDIT : j'ai remplace ModifyStyleEx(0,WS_EX_LAYERED); par un appel a InitLayeredWindows, ce coup ci cela passe, mais ma fenetre reste opaque, j'ai juste change la couleur du fond.
re,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define WS_EX_LAYERED 0x00080000
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Merci beaucoup, en rajoutant l'appel a InitLayeredWindows avant l'utilisation cela fonctionne parfaitement !
![]()
Partager