Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2650 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++/winamp/winXP] Rajouter une ombre sous la fenetre de winamp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++/winamp/winXP] Rajouter une ombre sous la fenetre de winamp

n°360149
Graffin
Demo or Die !
Posté le 14-04-2003 à 09:51:17  profilanswer
 

Alors voila... je voudrais rajouter une ombre en permanence sous winamp, pour cela jme suis dis qu'il serait "logique" de modifier la classe de style de la fenetre, comme ceci :

Code :
  1. SetClassLong(hwndWinamp, GCL_STYLE, GetClassLong(hwndWinamp, GCL_STYLE) | 0x00020000); //CS_DROPSHADOW


 
CS_DROPSHADOW est spécifique à winXP et vaut 0x00020000
Onp uet avec cette prop créer des fenetre avec une ombre dans style des tooltips
 
mais voila... ca marche (forcément ! :D) pas !
 
heuuu... kkun aurait une idée ?
ou je me trompe completement de méthode ?


Message édité par Graffin le 14-04-2003 à 09:54:09

---------------
::Mind is a terrible thing to taste::
mood
Publicité
Posté le 14-04-2003 à 09:51:17  profilanswer
 

n°360342
Graffin
Demo or Die !
Posté le 14-04-2003 à 12:49:14  profilanswer
 

:bounce:


---------------
::Mind is a terrible thing to taste::
n°360367
Konar
Posté le 14-04-2003 à 13:38:01  profilanswer
 

d'apres les man faut aussi appeler la fct SystemParametersInfo() avec uiAction=SPI_SETDROPSHADOW
 
http://msdn.microsoft.com/library/ [...] rsinfo.asp
 
Edit : autant pour moi, ca a pas grand chose a voir. T'as testé la valeur de retour de SetClassLong() ? Sinon c possible que le winamp detecte si un style change, et le refuse (Spy++ power)


Message édité par Konar le 14-04-2003 à 14:01:16
n°360548
Graffin
Demo or Die !
Posté le 14-04-2003 à 15:40:30  profilanswer
 

oui oui  
le Parametres est en effet activé sous XP :)
 
sinon j'ai trouvé ca, jvais voir ske ca donne :

Code :
  1. RedrawWindow(hwnd_winamp, NULL, NULL, DRW_FRAME | RDW_ERASE | RDW_INVALIDATE)


histoire qu'il se mette à jour
 
sinon : Spy++ POWA :hello:


---------------
::Mind is a terrible thing to taste::
n°362790
Graffin
Demo or Die !
Posté le 16-04-2003 à 09:52:28  profilanswer
 

bon ben ca donne pas grand chose :/
 
j'ai même "redirigé" la 'WNDPROC' afin de récuperer le message WM_CREATE mais ca donne rien :/
 
qq a une idée ? plize ? :)


---------------
::Mind is a terrible thing to taste::
n°363224
Graffin
Demo or Die !
Posté le 16-04-2003 à 13:50:10  profilanswer
 

UP utltime :/


---------------
::Mind is a terrible thing to taste::
n°364115
Graffin
Demo or Die !
Posté le 16-04-2003 à 23:25:52  profilanswer
 

bon j'ai trouvé un truc, c pas tres propre, mais ca reste à rendre "plus mieux" :
 

Code :
  1. ...
  2. OrigProc=(WNDPROC)SetWindowLong(hwnd,GWL_WNDPROC,(long)MakeShadow); // hwnd c le handle de winamp -> FindWindow ("Winamp v1.x", NULL); par exemple
  3. SendMessage(hwnd, WM_CREATE, NULL, NULL);
  4. SetWindowLong(hwnd,GWL_WNDPROC,(long)OrigProc);
  5. ...
  6. // La proc (WNDPROC) qui est appellée en "complément" de OrigProc qui est celle de winamp
  7. LRESULT APIENTRY MakeShadow(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  8.   if (uMsg == WM_CREATE) { // mouais :/
  9.     SetClassLong(hwnd, GCL_STYLE, (LONG)GetClassLong(hwnd, GCL_STYLE) | CS_DROPSHADOW);
  10.   }
  11.   return CallWindowProc(OrigProc, hwnd, uMsg, wParam, lParam);
  12. }


 
à faire à l'init [:spamafote]
 
ah oui pour que ca marche correct il faut au tt début :
#define _WIN32_WINNT 0x0501 // pour XP, 0x0500 c win2k
 
pour info, CS_DROPSHADOW = 0x00020000


Message édité par Graffin le 16-04-2003 à 23:28:30
n°364121
HelloWorld
Salut tout le monde!
Posté le 16-04-2003 à 23:33:58  profilanswer
 

Citation :

Edit : autant pour moi, ca a pas grand chose a voir. T'as testé la valeur de retour de SetClassLong() ? Sinon c possible que le winamp detecte si un style change, et le refuse (Spy++ power)


 
Il me semble que SetClassLong ne fonctionne que sur des classes CS_GLOBALCLASS. Sinon c'est refusé.
Y'a que SetWindowLong qui marche.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°364128
Graffin
Demo or Die !
Posté le 16-04-2003 à 23:40:07  profilanswer
 

sauf SetWindowLong ne change pas les classe [:joce]
 
à moins que ? :??:
 
ceci dit ca marche, j'ai mon ombre à la con, sauf que je viens de m'appercevoir kya maintenant DEUX sous-menu winamp dans le bouton dla barre des taches :crazy:
 
strodlabal [:sumo]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++/winamp/winXP] Rajouter une ombre sous la fenetre de winamp

 

Sujets relatifs
[SWING] La taille de la fenetre ?rajouter du text dans un TextArea en prenant en compte la selection
[OpenGL][wxWindows] Afficher de l'open GL dans une fenêtre wxWindowsoption d ouverture de fenetre
[Qt] quelle fonction pour intecepter la fermeture de la fenêtre d'appQue faut-il rajouter à Xemacs pour prog ?
[Batch] Fenetre DOS qui se ferme ![Java] Afficher le contenu d'un fichier texte dans une fenêtre ?
Connaitre la position de la fenêtre ouverte en JS ?[VISUAL C++]Changer la fenetre principale d'une SDI
Plus de sujets relatifs à : [c++/winamp/winXP] Rajouter une ombre sous la fenetre de winamp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR