Bonjour,
Voila j'ai un petit problème que je n'arrive pas à résoudre.
Je travaille sur Dev c++ en Windows Applications, en utlisant les api win32
Je possède une éditBox centrée sur une fenetre, configurée normalement.
Apres recherche sur internet sur l'opacité des fenetres, j'ai trouvé les fonctions à utiliser :
- SetWindowLong( hWnd ,GWL_EXSTYLE , GetWindowLong(hWnd,GWL_EXSTYLE) | WS_EX_LAYERED);
- SetLayeredWindowAttributes(hWnd , 0 , (BYTE)(iOpacity * 255 / 100) ,LWA_ALPHA);
Avec iOpacity un Entier permettant de definir l'opacité exact pour la fenetre.( % de 0 à 100 pour l'opacité)
J'ai testé ces fonctions et elles marchent à merveille, pour une fenetre "Normale" par exemple :
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
500, /* The programs width */
700, /* and height in pixels */
NULL, /* The window is a child-window to desktop */
NULL, /* No menu */
hinst, /* Program Instance handler */
NULL /* No Window Creation data */
);
La fenetre devient transparente à souhait.
Maintenant mon probleme se pose. Je definis une nouvelle fenetre de classe "edit" ce qui me donne une editBox.
Je la centre sur ma fenetre "mere" et la je souhaite la rentre transparente ou semi-transparente.
(La raison est que j'ai chargé un BitMap en fond de l'application mere, et que je souhaite la voir a travers mon editbox)
Ayant récupéré son hwnd, je le donne aux fonctions décrites si dessus, et là, malheur, cela ne marche pas.
(S'u été trop simple xD )
Je test le retour de fonction et vois que SetWindowLong me retourne Faux, ainsi il ne donne pas le style necessaire pour rendre la fenetre transparente ( WS_EX_LAYERED )
Voila, je seche ici, et je souhaite un peu d'aide pour me débloquer. Si vous avez une idée pour résoudre mon probleme, ou une autre fonction qui me permet d'arriver a mes fins, je suis preneur :)
Autres infos : mon editBox est définie comme ceci :
hVisu = CreateWindowEx ( 0, "edit", 0 ,
WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
0 , 0 , 100, 100, hwnd, (HMENU) ID_VISU , hinst, NULL);
(Je pense que cela est du a WS_CHILD qui empeche au style WS_EX_LAYERED de s'ajouter via SetWindowLong )
Merci de votre aide
