begin process at 2010 02 10 15:18:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CHANGER LE LOOK DE VOS APPLICATION FACILEMENT AVEC EASY SKIN

CHANGER LE LOOK DE VOS APPLICATION FACILEMENT AVEC EASY SKIN


 Information sur la source

Note :
9,83 / 10 - par 18 personnes
9,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Initié Date de création :11/01/2004 Vu / téléchargé :20 554 / 3 780

Auteur : NoMitsu

Ecrire un message privé
Commentaire sur cette source (53)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici un petit code qui a pour objectif de changer le look de votre application facilement, le code se decompose en une class , un module et un contrôle.

Le code a pas très commenter (excuser moi g pas eu le temps) mais bon sa marche assez bien, le seul petit problème c?est que les menu ne doive etre dans une autre feuille pour pouvoir faire un resize de la feuille (vous verrez bien) . a oui il faut aussi mettre le feuille sans bordure (sa parais evidant mais bon sa empeche aussi le resize de la feuille).

Sinon pour faire un skin il faut un Bmp et un fichier de configuration (voir exemple)
On peut rendre la feuille transparente, la « decouper » en indiquant une couleur specifique
Tous est parametrable. Pour la transparence j?utilise une API specifique a windows 2000/XP donc pour  ceux qui on 98 il faut la supprimer.

Source

  • 'Il suffit de mettre ce code dans votre feuille :
  • Option Explicit
  • Dim Skin As New cls_Skin
  • Dim frmX As Integer, frmY As Integer
  • Private Sub Form_DblClick()
  • If frmY <= Skin.HeightTitre Then If Me.WindowState = 0 Then Me.WindowState = 2 Else Me.WindowState = 0
  • End Sub
  • Private Sub Form_Load()
  • Skin.Open_Skin Me, App.Path & "\\skin\\defaut.ini"
  • Skin.Active_LimResize
  • comSkin1.Top = Skin.Menu_PosY
  • comSkin1.Left = Skin.Menu_PosX
  • End Sub
  • Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Skin.FormMouseDown Button, X, Y
  • End Sub
  • Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Skin.FormMouseMove X, Y
  • frmX = X: frmY = Y
  • End Sub
  • Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  • Skin.FormMouseUp Button, X, Y
  • End Sub
  • Private Sub Form_Resize()
  • Skin.FormResize
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer)
  • Skin.Desactive_LimResize
  • Set Skin = Nothing
  • End Sub
'Il suffit de mettre ce code dans votre feuille :

Option Explicit
 Dim Skin As New cls_Skin
 Dim frmX As Integer, frmY As Integer

Private Sub Form_DblClick()
    If frmY <= Skin.HeightTitre Then If Me.WindowState = 0 Then Me.WindowState = 2 Else Me.WindowState = 0
End Sub

Private Sub Form_Load()
    Skin.Open_Skin Me, App.Path & "\\skin\\defaut.ini"
    Skin.Active_LimResize
    
    comSkin1.Top = Skin.Menu_PosY
    comSkin1.Left = Skin.Menu_PosX
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Skin.FormMouseDown Button, X, Y
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Skin.FormMouseMove X, Y
    frmX = X: frmY = Y
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Skin.FormMouseUp Button, X, Y
End Sub

Private Sub Form_Resize()
    Skin.FormResize
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Skin.Desactive_LimResize
    Set Skin = Nothing
End Sub

 Conclusion

J?ai aussi mi dans le zip 4 skin pour vous faire une idee. Je prevoie de faire un editeur de skin car a la main sa prend du temps de les faire (environ 1h !) mais bon une fait que c fait?

Amuser vous bien.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MINWINDOW (GESTIONNAIRE DE FENETRE)
Source avec Zip Source avec une capture CLASSE JOUANT AVEC LA TRANSPARENCE ENTRE 2 CONTROLES ET UN D...
Source avec Zip Source avec une capture PATCHER EXPRESS (GÉNÉRATEUR DE PATCH)
Source avec Zip Source avec une capture COLORATION SYNTAXIQUE PAR RICHETEXTEBOX ET API (TRÈS RAPIDE)

 Sources de la même categorie

Source avec Zip ALBUM PHOTOS par ayoube2009
Source avec Zip Source avec une capture EDITEUR D'AUTOMATES CELLULAIRES par PADYVEN
Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture Source .NET (Dotnet) PHOTOSEXPRESS - TRAITEMENT DE PHOTOS par zozo14
Source avec Zip Source avec une capture ÉCRIRE SUR LE WALLPAPER par Rafale71

Commentaires et avis

Commentaire de Renfield le 12/01/2004 00:22:17 administrateur CS

ca a l'air sympa....

tu devrais te renseigner sur le SousClassing....ca pourrait t'aider......

Commentaire de gabchampagne le 12/01/2004 04:01:34

C'est très beau et simple mais :
Le temps de réaction quand on resize, déplace la fenêtre est lent
Pi ça doit coûter cher de mémoire
Pi pour les autres contrôles comme les listbox, les checkbox?

mais c bien.

Commentaire de LordBob le 12/01/2004 18:40:26

c'est pas mal, mais faut continuer à l'amèliorer !!!

Commentaire de z980x le 12/01/2004 18:53:39

"c'est pas mal" &lt;-- Mais lord, t'es fou?
C'EST MAGNIFIQUE ! (enfin je ne parle que de la skin orange...)

MAGNIFIQUE !


Par contre, pour la mettre dans son prog, c'est vraiment la mort...


NoMitsu, je te mets 10 ! Trop bien !!

Par contre, tu pourrais pas me dire comment intégrer juste la skin orange dans un prog? Ca m'aiderait bien.... Merci...

Commentaire de edthefarmer le 12/01/2004 20:24:59

un mot : SUPERBE
bone continuation ! ;-)

Commentaire de Xav88 le 12/01/2004 21:24:04

C'est beau mais je n'arrive pas a admirer les skin orange et bleu.
J'ai le message:
Erreur d'exécution 453
Point d'entrée SetLayeredWindowsAttributes d'une DLL introuvable dans User32 (J'ai win98 et vb6)

Aussi quand on réduit la form elle n'apparait pas dans la barre des taches. Dommage...

Xav

Commentaire de Renfield le 12/01/2004 22:10:29 administrateur CS

SetLayered..... ne fonctionnque depuis Win2000

Commentaire de Xav88 le 12/01/2004 22:18:10

Merci Renfield et dommage.

Sinon pour la barre des taches ? Quelqu'un a une idée ?

Xav

Commentaire de z980x le 12/01/2004 22:30:28

Et moi???

Comment faire pour mettre JUSTE le skin orange dans un prog?
Merci

Commentaire de Renfield le 12/01/2004 22:35:06 administrateur CS

Pour la barrde des tahces, il suffit de mettre ShowInTaskbar = True

Commentaire de NoMitsu le 12/01/2004 23:14:14

Merci a tous c sympa de voir que sa plait.

Gabchampagne -&gt; c vrais que c assez gourment en ressource plus particulierement lorsque l?api SetLayered est utiliser pour la transparence et la « decoupe » de la feuille
En se qui concerne les autre contrôle il est tous a fait possible de les recree comme le contrôle comskin (qui sait peu etre dans une prochaine version)

z980x -&gt; pour se qui est de n?utiliser qu?un skin je pence que c?est faisable de 2 façons la premiere utiliser une ressource et y integrer le bmp et le Ini mais personnellement je ne pourrais pas t?aidee plus que sa sur les ressource car je n?est jamais reellement essailer (mais je c que sa existe). Sinon il te reste plus ca mettre une picturebox dans ta form et y ajouter le bmp. Dans se cas la il faudra supprimer la variable (ds la class cls_skin) « Private Pic As StdPicture »
et la remplacer dans le code par ta picturebox. Puis deuxieme etape, inscrire manuellement les parametre contenue dans le .ini dans les variable qui leur corresponde (c pas franchement se qu?il y a de plus sympa mais perso je vois que c deux solution)

Renfield -&gt; pour ce qui est du SousClassing je l?utilise deja pour limiter le resize de la form, et se que j?aime pas avec le SousClassing c?est que lorsqu?il y a un bug et que vb s?arrette sa plante mais pet?etre que je mis prand mal si tu a un tuto a me proposer je suis preneur

Voilà en gros, pour la prochaine version je prevois de faire qqc pour les menu car c assez handicapent et aussi d?optimiser un peu le code (ds la mesure de mes capacite lol), ainsi que de fusionner le bmp et les ini pour ne faire qu?un seul fichier, enfin et surtout un editeur de skin car a la main c mort.

Commentaire de rhonin le 14/01/2004 09:20:11

Très bonne source je crois que cela pourra servir...
Attend avec impatience la prochaine version

Commentaire de Renfield le 14/01/2004 12:46:51 administrateur CS

le sous classing ne fait pas planter VB, si tu ne fais pas n'importe quoi...

premiere chose, il faut faire gaffe a debrancher le sous classing a la fermeture de l'application...
autre chose, vraiment très importante : ne JAMAIS utiliser le bouton STOP (bouton carré) qui se trouves dans la barre d'outils de VB... en effet, tout est interrompu violement, et empeche le sousclassing de liberer correctement sa place....

une solution, que je trouve excellente, et l'utilisation d'une Dll pour le sousclassing. Outre le fait de ne pas avoir a recoder le processus de sousclassing, on n'a plus le soucis avec le vouton stop, et c'est assez simple a mettre en oeuvre. J'ai d'ailleurs moi même fait un Dll, dont il faut que je pense à déposer les sources.... je verrai ca se soir.... au pire, tu peux trouver une version de ma Dll dans ma source "Container Scrollable".

Commentaire de wnoci le 20/01/2004 11:40:48

Je sius impressionné par les effets et la facilité d'emploi.

Juste une suggestion:

le bouton qui sert à passer d'un skin à l'autre pourrait être intégré à la barre, un joli bouton rond à gauche ( à la place du bouton qui est redondant avec les commandes de droite).
Ainsi, en cliquant sur ce nouveau bouton, au lieu d'ouvrir une commonDialog et de selectionner un skin, la form s'afficherait avec les différents skins disponibles ...

bon courage et encore bravo

Commentaire de Masq le 02/02/2004 09:45:53

Comment faire pour utiliser ce programme dans une MDIForm ?
Merci

Commentaire de NoMitsu le 02/02/2004 22:14:21

ouha, bas pour etre fran lorsque j'ai progrmmer la class j'ai absolument pas pencer au form MDI et il semblerais que tu ne puisse pas t'en servir dans se cas desoler

Commentaire de Masq le 03/02/2004 08:12:49

Est-ce qu'il y aurait une autre solution car le code fonctionne sur la MDI mais enlève le contour de la feuille et je n'ai pas trouvé pourquoi.
Si quelqu'un a une solution
Merci d'avance

Commentaire de NoMitsu le 03/02/2004 15:38:52

pour empecher d'enlever les bord il faut enlever la ligne
Call Hide_Bord dans la class cls_Skin dans la function Open_Skin

Commentaire de Masq le 03/02/2004 15:42:31

Je suis d'accord, je l'ai déjà fait mais du coup ma fenêtre n'a pas le nouveau style et ce n'est pas en accord avec le reste de l'application

Commentaire de Skizopat le 09/02/2004 10:59:57

Bravo a toi NoMitsu

Cette application est terrible. Malgres qu'elle ne soit pas optimisée au niveau de la rapidité, la qualité visuelle et la simplicité nous fait oublier ce p'tit inconvenient.   ;)

Commentaire de magicgus le 13/02/2004 21:53:09

Vraiment pas mal, et puis sa regroupe tout en un ...

G aussi une petite sugjestion : de faire en sorte d'integrer le fichier "inf" et le "bmp" dans un seul fichier skin
Ce qui pourais etre pratique en cas de téléchargement du skin depuis le net pour activation immediate, comme winamp ...

Previent moi a la prochaine version lol

Commentaire de spomky le 25/03/2004 19:04:49

excellent! C vraiment du bon travail, même moi qui ne suis pas très doué G réussi a le faire fonctionner
je V voir un peu de + près comment c'est foutu et essayer de faire de nouveaux objets (textbox, xheckbox et autres)

un bon 10/10 bien mérité!

Commentaire de z980x le 25/03/2004 19:07:03

Si quelqu'un peut me dire comment faire pour utiliser le skin avec un menu, ca me plairait bien...

Merci !

Commentaire de spomky le 25/03/2004 19:18:30

tu ne peux pas ; si tu utilise le créateur de menu ton menu ne devrai pas s'afficher ou s'afficher hors de la fenêtre. encore un composant à créer a mon avis ou alors essai de bidouiller avec des menus popup

Commentaire de z980x le 25/03/2004 19:19:50

ouais... c'est bof bof tout ca...

Commentaire de bigM le 03/06/2004 05:09:17

1)c bien c tres bien meme mais je voudrai savoir avec qoi t'as fait les *.bmp pour en cree d'autre
2)chui un grrooo debutant et je veut savoir comment faire pour utiliser vos skin dans une autre aplication que je veut faire (une autre form)
chez moi tout fonctionne tres bien aucun prob niveau resize et deplacement.
meci et encore bravo

Commentaire de NoMitsu le 04/06/2004 00:27:43

merci

1) pour les bmp, c'est la ou le bas blesse il faut tous faire de A à Z tous comme les ini. J'avais commencer a cree un editeur de skin que je n'est pas fini (il faudrais que je mis remet, peu etre pandant les grd vacance) il ne reste plus qu'a faire la fonction d'enregistrement des ini mais c assez long et puis question ergonomie c'est pas encore sa mais sa permet de gagner qd meme beaucoup plus de temps.

Alors si vous ete presser je veu bien poster la beta de l'editeur de skin mais je ne vous previen qu'il reste encore a faire (il vous suffie de demander et je la poste).

2) pour pouvoir utilisele skin ds un de tes programme il te suffie de mettre exacrement la classe et le code qu'il y a ds l'exemple c'est tous.

PS: je vous prepare une petite version 2 de cette petite source au programme la pocibiliter de charger un skin a partire d'un fichier resource ou d'un fichier skin qui contien le bmp et le fichier ini, ainsi que la corection de qq bug

Commentaire de bigM le 04/06/2004 03:41:09

ok mercie je ne suis pas pressez donc prend ton temps mais quand tu l'aura fini fait moi signe ciao

Commentaire de z980x le 04/06/2004 07:10:38

Ouais, et si tu pouvais faire un truc pour que l'on puisse appliquer ton skin même avec des menus, ca serait TERRIBLE !!!

Commentaire de z980x le 13/06/2004 14:04:10

Ouhlalalalala...

Je fais une appli dans laquelle on peut déplacer une photo...
Sans le skin, ca marche parfaitement.
Avec... CA RAME A MORT !

Ca bouffe trop trop de ressources ! lol

Commentaire de z980x le 13/06/2004 14:08:51

Ah non... En fait ca le fait seulement avec le SpaceBlue et le SpaceOrange...

Les autres ca ne rame pas du tout...

Quelqu'un aurait une solution pour que ca rame pas avec le SpaceOrange (Le plus beau selon moi)?

Commentaire de NoMitsu le 13/06/2004 15:45:51

desoler j'ai pas la solution mais je c pour koi sa ramme au tps, c du a la trensparence et au faite que la form est decouper, on resent aussi des ralenticement sever avec c 2 skin lors d'un resize avec des PC pas trop puissant, si vous avez des idée pour ameliorer sur tous n'esiter pas a partager

Commentaire de z980x le 13/06/2004 15:47:08

Non ce n'est pas du à la transparence...

J'avais essayer parce que je croyais que c'était ca mais en fait pas du tout...

Commentaire de chillboy007 le 19/06/2004 17:58:09

WOW, ton code abuse !
J'y apprend plein de trucs :) Ca mériterai presque un trophé. Mais jsuis peut-être pas assez callé en la matière pour bien en juger.
Peu importe.. Bonne continuité.

Des sources comme celles-ci, ca embelli le site ;)

N.B.: T'as msn ? si ca t'ennuirai pas, j'aurais un tas de questions à te poser :) ..et peu-être qq trucs de mon côté à te montrer.

Commentaire de Sploof le 19/07/2004 19:41:40

Trop fort !!
Serait il possible d'avoir un peu plus d'infos car je souhaiterai me servir de tes sources pour skinner mon aplli ???

Merci beaucoup !!!

Commentaire de NoMitsu le 20/07/2004 22:13:07

z980x-> les ralenticement son bien du a l'api qui gere la transparence et a la meme api qui "decoupe la feuille" suivent la couleur defini. Enfin je pence que l'on pourais remedier a se problement en utilisant les api CreateRectRgn, CombineRgn et cree notre propre algoritme afin d'optimiser le  "decoupage de la feuille" (avis au amateur)

chillboy007-> je suis flater pr se qui est du trophé lol, je pence pas que sa soi a se point la, enfin si tu veu prandre contact pas de PB mais passe par la messagrie de vbfrance.

Sploof->Oui je peu te donner toute les info que tu veu suffie de posser les Questions lol :)

Sinon je cherche qq1 qui voudrais developer ac moi la partie editeur de skin car je galaire et j'ai plus vraiment le tps de m'ocuper a font de l'editeur (si qq1 et motiver....)

Commentaire de killer_003 le 09/10/2004 23:39:47

Tres bon travail 9/10 je te souhait une bonne continuation a +

Commentaire de soldier8514 le 16/02/2005 22:20:07

salut jeune jedï  , tu devrais faire une ocx et la vendre :  à titre indicatif  vbskinner vend la licence dutilisation de sa version 'entreprise' à 300 dollars _
tu devrais etre gagnant à faire pareil  _ ...surtout que niveau concurence _ ya personne sinon VbSkinner ...
++

Commentaire de soldier8514 le 16/02/2005 22:21:08

te laisses le lien de leur site :

http://www.visual-basic.com.ar/vbskinner-buy-en.htm

Commentaire de NoMitsu le 16/02/2005 22:56:38

Je savais pas que de tel ocx existais deja, faut dire je n'avais pas chercher a l'epoque. Mais bon je trouve que 300$ pour "ça" c'est abuser, sa les vaut vraiment pas, ou alors on serais tous deja riche sur vbfrance lol.
Enfin, je ne conte pas faire payer les source que je poste ici, c'est contre mes convictions, je poste mes source ici lorsque je pence qu'elle peuvent avoir un interai pour certain et pour moi meme, tous simplement partager. Lorsque je vois tous vos commentaires, tous les encouragement sa me suffi et me motive encore plus. Et je remercie tous ceux qui contribue et partage leur savoir, sans qui je n'aurais pus m'initier a la programmation. (Merci NIX et toute l'equipe de Code Source)

Commentaire de soldier8514 le 20/02/2005 22:59:14

viens de trouver un bugg et g pas enkore la soluce alors si kk1 l'a avant moa ...

voilà si on rajoutte une textbox avec le multiline sur 'true' _
on demarre le soft _
taper plusieur fois entrée pour faire descendre l'ascenceur

et là c le drame _ windows xp se bloque juska planter et redemarrer ...


Commentaire de soldier8514 le 20/02/2005 23:06:07

je rajoutterais juste que ça ne peut pas venir de Hook_Process car je me sers pas de la méthode resize ...

Commentaire de NoMitsu le 23/02/2005 00:25:45

ok, je viens de regarder vite fait, j'ai trouver la source du bug mais je ne sais pas comment le resoudre, car il viens de l'api SetLayeredWindowAttributes, c'est celle qui sers a la transparence de la feuille et a la decoupe des zones de couleur a enlever.  

il y a trois cas possible :

1er cas (on rend la feuille transparent uniquement) :
Call SetLayeredWindowAttributes(Form.hWnd, Crk, TranslucenceLevel, LWA_ALPHA)

dans se cas tous marche

2eme cas (on decoupe la feuille uniquement) :
Call   (Form.hWnd, Crk, TranslucenceLevel, LWA_COLORKEY)

La encore pas de pb tous marche

par contre dans le cas ou on combine les 2, il y a se bug !!! alors sauf si j'utilise pas l'api correctement je ne vois pas comment je peu regler le pb

si quelqu'un peu me corriger :

Call   (Form.hWnd, Crk, TranslucenceLevel, LWA_COLORKEY or LWA_ALPHA)


Commentaire de soldier8514 le 23/02/2005 22:03:54

source msdn.com

Your computer screen may not repaint correctly if the child window of a translucent parent is moved
Article ID : 824337
Last Review : November 4, 2004
Revision : 6.0
On this page
SYMPTOMS SYMPTOMS
CAUSE CAUSE
RESOLUTION RESOLUTION
STATUS STATUS
MORE INFORMATION MORE INFORMATION
SYMPTOMS
If an application contains a layered window that is translucent, and the layered window has a movable child window, the screen is not correctly painted if the contents of the child window change. This problem may occur when you use the SetLayeredWindowAttributes Windows Graphics Device Interface (GDI) function or when you use the Microsoft Windows Forms TransparencyKey property to set the opacity and to set the transparency color key of the layered window. For example, if a layered window contains a list view, the layered window may appear as if the list view headers or the list does not scroll correctly and that the screen does not repaint correctly.
CAUSE
The child window area was not invalidated correctly by the GDI.
RESOLUTION
Windows XP service pack information
To resolve this problem, obtain the latest service pack for Microsoft Windows XP. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
322389 How to obtain the latest Windows XP service pack
Hotfix information
A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Windows XP service pack or Microsoft Windows Server 2003 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:
http://support.microsoft.com/default.aspx?scid=fh;[LN];CNTACTMS
Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.
Prerequisites
&#8226; For Windows 2000, this hotfix requires Windows 2000 Service Pack 3 (SP3).
&#8226; For Windows XP, this hotfix requires Windows XP Service Pack 1a (SP1a).
&#8226; For Windows Server 2003, there are no prerequisites.
Restart requirement
You must restart your computer after you apply this hotfix.
Hotfix replacement information
This hotfix does not replace any other hotfix.
Windows 2000 file information
The English version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.

   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   23-Jul-2003  00:55  5.0.2195.6738      42,256  Basesrv.dll
   17-Jan-2003  17:06  5.0.2195.6656     236,304  Cmd.exe
   23-Jul-2003  00:55  5.0.2195.6762     222,992  Gdi32.dll
   23-Jul-2003  00:55  5.0.2195.6741     711,440  Kernel32.dll
   23-Jul-2003  00:55  5.0.2195.6789     333,072  Msgina.dll
   08-Apr-2003  06:54  5.0.2195.6701      90,232  Rdpwd.sys
   15-Jul-2003  23:08  5.0.2195.6776   4,858,368  Sp3res.dll
   23-Jul-2003  00:55  5.0.2195.6785     380,176  User32.dll
   23-Jul-2003  00:55  5.0.2195.6788     385,808  Userenv.dll
   23-Jul-2003  00:32  5.0.2195.6790   1,628,912  Win32k.sys
   17-Jul-2003  18:20  5.0.2195.6785     182,032  Winlogon.exe
   23-Jul-2003  00:55  5.0.2195.6775     243,984  Winsrv.dll
   23-Jul-2003  00:55  5.0.2195.6741     711,440  Kernel32.dll
   23-Jul-2003  00:55  5.0.2195.6790   1,628,912  Win32k.sys
   23-Jul-2003  00:55  5.0.2195.6775     243,984  Winsrv.dll

Windows XP file information
The English version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.

   Date         Time   Version         Size       File name    Platform
   ---------------------------------------------------------------------
   23-Jul-2003  21:18  5.1.2600.1251   1,677,056  Win32k.sys   x86
   23-Jul-2003  21:18  5.1.2600.1251   5,619,968  Win32k.sys   IA-64

Windows Server 2003 file information
The English version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.

   Date         Time   Version            Size    File name     Platform
   ----------------------------------------------------------------------
   14-Jul-2003  18:01  5.2.3790.68     1,811,456  Win32k.sys    x86
   14-Jul-2003  17:56  5.2.3790.68     4,949,504  Win32k.sys    IA-64


STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section. This problem was first corrected in Microsoft Windows XP Service Pack 2.

Commentaire de soldier8514 le 23/02/2005 22:08:16

Tout ça pour dire que le problem vient enkor de chez Kro$oft __ faut avoir les derniers service pack  pour que cette api soit utilisable à 100 % ( perso jai le tout premier et c tout (d'où le pb chez moi )... )

je présents déjà qu'à la prochaine version de ZinDowz on va bien se marrer en explorant les nouvelles API ;)

Commentaire de soldier8514 le 24/02/2005 00:06:30

du coup j'ai désactivé la transparence dans les fichiers SpaceOrange.ini et spaceblue.ini et j'ai le meme probleme ___hmmm après un bref coup d'oeil sur la msdn j'ai vu kils utilisaient H1 au lieu de H3 : cf ci dessous :)


Call SetLayeredWindowAttributes(Form.hwnd, Crk, TranslucenceLevel, &H3)

provoque a lui seul  le meme soucis (bloquage de laffichage pendant 1 minute environ
( parenthese dans la parenthese : j'ai du bol cette fois ci ça a pas redémarré mon TouBo Xp Pro :))

a remplacer par :

Call SetLayeredWindowAttributes(Form.hwnd, Crk, TranslucenceLevel, &H1)

et ça rox ;)

Au fait , tu l'avais trouvé où cette valeur H3 ? _ paceke juske là toutes les sources ke jai vu et ki utilisent cette api  utilisent H1 .

++ bonne prog _ au risque de me répéter : c vraiment un très bon source que tu nous a pondu là  
-------------------------------------------------------------------------
Soldier8514 le 24/02/2005     00h09 heure locale

Commentaire de NoMitsu le 24/02/2005 10:44:26

Merci pour la pression, c'est vrais que sa vas etre la merde avec le prochain Win, vas falloir tous migrer on vas bien se prendre la tete je sens, quelque nuit blanche en perspective lol

Enfin,
Call SetLayeredWindowAttributes(Form.hwnd, Crk, TranslucenceLevel, &H3) c'est se que j'expliquais lors de mon dernier poste, le &H3 c'est egale a  LWA_COLORKEY or LWA_ALPHA,j'ai oublier de mettre les constante lorsque j'ai poster la source, sa permet de faire la transparence de la feuille et de la decouper en meme tps

Commentaire de salazar le 08/03/2005 13:02:49


Pour opimiser le code, j'ai écris une fonction qui rend transparent tous les pixels BLANC (par défaut) d'une picturebox, sans consommer de ressource.

NoMitsu, je te donne ce code dans l'espoir que tu sortes une mise à jour de ton code en y intégrant toutes nos remarques.
STP, on admire ton travail, fais le pour nous tous ! ! !





''******************************************************************************
'  Rend une PictureBox transparente et tous les objets supperposés sur celle-ci
'  La couleur de transparence est basée sur le pixel en haut a gauche.
'  On peut mettre n'importe quelle couleur.
'  Il faut que l'image soit encadrée par cette couleur.
'
'    Param :
'           le nom de la photo inclus dans le PictureBox
'           le nom de la fenetre contenant le PictureBox
'
''******************************************************************************



Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Const RGN_OR = 2

Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H2
Private Const WS_EX_LAYERED = &H80000

Sub PictureBoxTransparent(ByVal UserForm As Form, ByVal picSkin As PictureBox)
    
    ' faites une fenêtre "région" basée sur une picture de picture box
    ' Ceci ce fait en passant l'image pixel par pixel et en créant une
    ' région pour chaque pixel non transparent
    ' Le code est optimisé, il est donc assez rapide
    
    Dim X As Long, Y As Long, StartLineX As Long
    Dim FullRegion As Long, LineRegion As Long
    Dim TransparentColor As Long
    Dim InFirstRegion As Boolean
    Dim InLine As Boolean
    Dim hdc As Long
    Dim PicWidth As Long
    Dim PicHeight As Long
    
    'Propriétés de la picture box
'    picSkin.AutoSize = True
    picSkin.AutoSize = False    'nécessaire pour le zoom
    
    picSkin.AutoRedraw = True
    picSkin.BorderStyle = 0
    
    
    picSkin.BorderStyle = 0
    picSkin.ScaleMode = 3
    'Position de la picture box
    picSkin.Top = 0
    picSkin.Left = 0
    
    hdc = picSkin.hdc
    PicWidth = picSkin.ScaleWidth
    PicHeight = picSkin.ScaleHeight

    
    InFirstRegion = True
    InLine = False
    X = Y = StartLineX = 0
    
    ' Ici, la couleur de transparence est basé sur le pixel en haut a gauche
    ' Mais vous pouvez mettre la couleur ke vous voulez
    TransparentColor = GetPixel(hdc, 0, 0)
    
    For Y = 0 To PicHeight - 1
        For X = 0 To PicWidth - 1
            
            If GetPixel(hdc, X, Y) = TransparentColor Or X = PicWidth Then

                If InLine Then
                    InLine = False
                    LineRegion = CreateRectRgn(StartLineX, Y, X, Y + 1)
                    
                    If InFirstRegion Then
                        FullRegion = LineRegion
                        InFirstRegion = False
                    Else
                        CombineRgn FullRegion, FullRegion, LineRegion, RGN_OR

                        DeleteObject LineRegion
                    End If
                End If
            Else
                If Not InLine Then
                    InLine = True
                    StartLineX = X
                End If
            End If
        Next
    Next
    
    SetWindowRgn UserForm.hWnd, FullRegion, True
    DeleteObject FullRegion
    
End Sub

Commentaire de hindus19 le 08/04/2005 12:14:14

lorsque j ai colé le code ds ma forme ça s'affiche le message suivant : Dim Skin As New cls_Skin type non defini qu'est ce qeu je dois faire

Commentaire de phpamateur le 14/07/2006 11:25:05

ta source est vraiment géniale, il y a du sacré boulot dériere, pour moi c est un 10/10 . bon continuation.
En fait, disez moi les gas est ce qu'il y a quelque qui aime mirosoft et surtout WINXP.

Commentaire de Vedlen le 22/10/2006 15:29:36

Ca rend vraiment bien, dommage que ce soit difficilement portable ;)
10/10

Commentaire de Mayzz le 25/12/2006 05:29:20

Très belle source 10/10 !!!! rien d'autre à redire

Commentaire de badr07 le 24/02/2007 20:42:02

il y aurai moyen d'avoir d'autre SKINS ???
sinon c'est super !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales