utilisation du fichier manifest

Le
Driss HANIB
Bonjour

Je suis en train de rendre un prog fait en VB6 au style XP. J'utilise pour
cela un fichier manifest.
Cela se passe assez bien (n gérant les options boutons..) mais il y a un
petit "problème" avec les boutons : si on utilise un bouton en style
"graphical", pour mettre notament une icone, le format XP ne s'applique
pas..
Avez vous rencontré ce problème et l'avez vous résolu ?..

Merci

Driss
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
parci
Le #15369901
On Thu, 28 Feb 2008 10:24:50 +0100, "Driss HANIB"

Bonjour

Je suis en train de rendre un prog fait en VB6 au style XP. J'utilise pour
cela un fichier manifest.
Cela se passe assez bien (n gérant les options boutons..) mais il y a un
petit "problème" avec les boutons : si on utilise un bouton en style
"graphical", pour mettre notament une icone, le format XP ne s'applique
pas..
Avez vous rencontré ce problème et l'avez vous résolu ?..



Pas essayé mais ça devrait convenir :
http://www.mvps.org/emorcillo/en/code/vb6/graphicalbuttonxp.shtml
parci
Le #15369861
On Sat, 01 Mar 2008 19:48:34 +0100, parci
On Thu, 28 Feb 2008 10:24:50 +0100, "Driss HANIB"

Bonjour

Je suis en train de rendre un prog fait en VB6 au style XP. J'utilise pour
cela un fichier manifest.
Cela se passe assez bien (n gérant les options boutons..) mais il y a un
petit "problème" avec les boutons : si on utilise un bouton en style
"graphical", pour mettre notament une icone, le format XP ne s'applique
pas..
Avez vous rencontré ce problème et l'avez vous résolu ?..



Pas essayé mais ça devrait convenir :
http://www.mvps.org/emorcillo/en/code/vb6/graphicalbuttonxp.shtml



Pas terrible, en fait.

Ceci dit, je te remercie parce que ta question m'a fait comprendre
qu'un problème de performances de chargement de données que j'avais eu
dans le passé était lié à l'utilisation d'un fichier manifest.


Pour ceux que ça intéresse et qui voudraient reproduire le problème :

config : VB5 / Xp Media Center sp2 / Ado 2.8 / db Access 2000 (il me
semble que c'était pareil sur un Xp Pro, je confirmerai plus tard)

le fichier manifest :
si externe comme indiqué là :
http://support.microsoft.com/default.aspx?scid=kb;en-us;309366

si inclus dans un fichier ressource comme dans l'exemple de
vbAccelerator :
http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/VB6_XP_Styles_Demonstration_-_Manifest_Resource.asp


Une table d'environ 5000 lignes que je charge dans un combobox. Temps
de chargement en ms :

style xp sans fichier manifest
création du recordset : 15
chargement du combo : 670/680

style xp avec fichier manifest
création du recordset : 15
chargement du combo : 4600/4800

style xp avec fichier manifest dans un fichier ressource
création du recordset : 15
chargement du combo : entre 2200/2300 et 5000

ça fait cher la bordure bleu ciel autour du combo.


style windows classique sans fichier manifest
création du recordset : 15
chargement du combo : 530/540

style windows classique avec fichier manifest
création du recordset : 15
chargement du combo : 4200/4400

style windows classique avec fichier manifest dans un fichier
ressource
création du recordset : 15
chargement du combo : entre 2000 et 4200/4400

ça fait très cher pour rien.


Conclusion, plus de style lego pour moi en Vb.


Souriez, vous êtes archivé :
http://groupes.codes-sources.com/article-utilisation-fichier-manifest-294853.aspx
Driss HANIB
Le #15369751
merci parci

à la fois pour ton lien que je vais regarder et pour tes tests.
C'est vrai pour ma part, chargeant des feuilles avec de nombreux controles
cela ralentit...
je vais voir tout cela..
au pire j'enlèev le fichier manifest, quoique je l'ai mis dasn une classe
qui le crée (trouvé sur le net :vbfrance je le crois)

Driss

"parci"
On Sat, 01 Mar 2008 19:48:34 +0100, parci
On Thu, 28 Feb 2008 10:24:50 +0100, "Driss HANIB"

Bonjour

Je suis en train de rendre un prog fait en VB6 au style XP. J'utilise
pour
cela un fichier manifest.
Cela se passe assez bien (n gérant les options boutons..) mais il y a un
petit "problème" avec les boutons : si on utilise un bouton en style
"graphical", pour mettre notament une icone, le format XP ne s'applique
pas..
Avez vous rencontré ce problème et l'avez vous résolu ?..



Pas essayé mais ça devrait convenir :
http://www.mvps.org/emorcillo/en/code/vb6/graphicalbuttonxp.shtml



Pas terrible, en fait.

Ceci dit, je te remercie parce que ta question m'a fait comprendre
qu'un problème de performances de chargement de données que j'avais eu
dans le passé était lié à l'utilisation d'un fichier manifest.


Pour ceux que ça intéresse et qui voudraient reproduire le problème :

config : VB5 / Xp Media Center sp2 / Ado 2.8 / db Access 2000 (il me
semble que c'était pareil sur un Xp Pro, je confirmerai plus tard)

le fichier manifest :
si externe comme indiqué là :
http://support.microsoft.com/default.aspx?scid=kb;en-us;309366

si inclus dans un fichier ressource comme dans l'exemple de
vbAccelerator :
http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/VB6_XP_Styles_Demonstration_-_Manifest_Resource.asp


Une table d'environ 5000 lignes que je charge dans un combobox. Temps
de chargement en ms :

style xp sans fichier manifest
création du recordset : 15
chargement du combo : 670/680

style xp avec fichier manifest
création du recordset : 15
chargement du combo : 4600/4800

style xp avec fichier manifest dans un fichier ressource
création du recordset : 15
chargement du combo : entre 2200/2300 et 5000

ça fait cher la bordure bleu ciel autour du combo.


style windows classique sans fichier manifest
création du recordset : 15
chargement du combo : 530/540

style windows classique avec fichier manifest
création du recordset : 15
chargement du combo : 4200/4400

style windows classique avec fichier manifest dans un fichier
ressource
création du recordset : 15
chargement du combo : entre 2000 et 4200/4400

ça fait très cher pour rien.


Conclusion, plus de style lego pour moi en Vb.


Souriez, vous êtes archivé :
http://groupes.codes-sources.com/article-utilisation-fichier-manifest-294853.aspx


parci
Le #15369701
On Mon, 3 Mar 2008 10:44:25 +0100, "Driss HANIB"

merci parci

à la fois pour ton lien que je vais regarder et pour tes tests.
C'est vrai pour ma part, chargeant des feuilles avec de nombreux controles
cela ralentit...
je vais voir tout cela..
au pire j'enlèev le fichier manifest, quoique je l'ai mis dasn une classe
qui le crée (trouvé sur le net :vbfrance je le crois)



Pour en revenir au bouton de style graphique, il y a un moyen assez
simple qui donne un résultat que je trouve acceptable même si ce n'est
pas exactement le style xp (pas de bordure de couleur). Pour essayer,
il faut un formulaire avec un bouton avec le style standard et un
picturebox contenant une icone. Tu compiles sans oublier le manifest
et tu vera si ça te convient.

Private Sub Form_Load()
SetIconButton Me.Command1.hWnd, Me.Picture1.Picture.Handle
End Sub


Et dans un module :

' Button style and message
Private Const BM_SETIMAGE As Long = &HF7

Private Const IMAGE_ICON As Long = 1
Private Const BS_ICON As Long = 64

' Window field offsets for GetWindowLong()
Private Const GWL_STYLE = (-16)

' SetWindowPos Flags
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_NOCOPYBITS = &H100
Private Const SWP_NOOWNERZORDER = &H200

Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal lNewLong As Long) As Long

Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetWindowPos _
Lib "user32" _
(ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal _
Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long


' -------------------------------------------
' appliquer un style de fenêtre

Public Function UpdateStyle(hWnd As Long, _
dwBitsOr As Long, _
dwBitsNot As Long) As Long


Dim lStyle As Long

If IsWindow(hWnd) Then
lStyle = GetWindowLong(hWnd, GWL_STYLE)
lStyle = (lStyle Or dwBitsOr)
lStyle = (lStyle And Not dwBitsNot)
SetWindowLong hWnd, GWL_STYLE, lStyle
SetWindowPos hWnd, 0, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOZORDER Or _
SWP_NOOWNERZORDER Or SWP_FRAMECHANGED
End If

End Function

Public Sub SetIconButton(hButton As Long, hIcon As Long)
UpdateStyle hButton, BS_ICON, 0
SendMessage hButton, BM_SETIMAGE, IMAGE_ICON, ByVal hIcon
End Sub
Driss HANIB
Le #15369691
Ok merci parci


"parci"
On Mon, 3 Mar 2008 10:44:25 +0100, "Driss HANIB"

merci parci

à la fois pour ton lien que je vais regarder et pour tes tests.
C'est vrai pour ma part, chargeant des feuilles avec de nombreux
controles
cela ralentit...
je vais voir tout cela..
au pire j'enlèev le fichier manifest, quoique je l'ai mis dasn une classe
qui le crée (trouvé sur le net :vbfrance je le crois)



Pour en revenir au bouton de style graphique, il y a un moyen assez
simple qui donne un résultat que je trouve acceptable même si ce n'est
pas exactement le style xp (pas de bordure de couleur). Pour essayer,
il faut un formulaire avec un bouton avec le style standard et un
picturebox contenant une icone. Tu compiles sans oublier le manifest
et tu vera si ça te convient.

Private Sub Form_Load()
SetIconButton Me.Command1.hWnd, Me.Picture1.Picture.Handle
End Sub


Et dans un module :

' Button style and message
Private Const BM_SETIMAGE As Long = &HF7

Private Const IMAGE_ICON As Long = 1
Private Const BS_ICON As Long = 64

' Window field offsets for GetWindowLong()
Private Const GWL_STYLE = (-16)

' SetWindowPos Flags
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_NOCOPYBITS = &H100
Private Const SWP_NOOWNERZORDER = &H200

Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal lNewLong As Long) As Long

Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetWindowPos _
Lib "user32" _
(ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal _
Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long


' -------------------------------------------
' appliquer un style de fenêtre

Public Function UpdateStyle(hWnd As Long, _
dwBitsOr As Long, _
dwBitsNot As Long) As Long


Dim lStyle As Long

If IsWindow(hWnd) Then
lStyle = GetWindowLong(hWnd, GWL_STYLE)
lStyle = (lStyle Or dwBitsOr)
lStyle = (lStyle And Not dwBitsNot)
SetWindowLong hWnd, GWL_STYLE, lStyle
SetWindowPos hWnd, 0, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOZORDER Or _
SWP_NOOWNERZORDER Or SWP_FRAMECHANGED
End If

End Function

Public Sub SetIconButton(hButton As Long, hIcon As Long)
UpdateStyle hButton, BS_ICON, 0
SendMessage hButton, BM_SETIMAGE, IMAGE_ICON, ByVal hIcon
End Sub





Publicité
Poster une réponse
Anonyme