UserControl et ShowInTaskbar : elle veut pas en partir !

Résolu
Adam0052
Messages postés
4
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
5 mars 2006
- 4 mars 2006 à 11:21
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
- 5 mars 2006 à 18:27
Bonjour,

Je suis en train de programmer une petite horloge graphique, et je me rends compte qu'elle apparaît dans la barre des tâches. C'est en fait un usercontrol pour la rendre en partie transparente : le form qui la contient n'est pas visible pendant l'éxécution, tout est au point, du moins presque...

Comme les usercontrols n'ont pas de propriété ShowInTaskbar, je ne sais pas comment la faire disparaître de la barre des tâches... Auriez-vous une solution ?

Merci d'avance,

Fabien.

6 réponses

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
4 mars 2006 à 11:44
A mon avis, ce n'est pas le ShowInTackBar de ton contrôle qui pose problème (vu que la fenêtre d'un contrôle n'apparait pas dans la barre des taches), mais la feuille contenant ton contrôle qui elle doit avoir sa propriété ShowInTaskBar à True, et du coup, apparait dans la barre des tâches...

Sinon, au lieu de passer par un contrôle, tu ferais mieux de passer par une région pour découper ta feuille : ca gaspillerai moins de ressources ! Voir ma source nommée Horloge Système par exemple...

_

<spa></spa>
3
Adam0052
Messages postés
4
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
5 mars 2006

5 mars 2006 à 14:42
Justement non, la feuille qui accueille le controle a bien ShowInTaskBar à False, et comme le système de masque me semble super efficace, je souhaiterais ne pas changer de méthode...
J'ai essayé d'ajouter du code pour forcer cette fonction :
'Private Const GWL_EXSTYLE = (-20)
'Private Const WS_EX_APPWINDOW = &H40000
'Private Const WS_EX_TOOLWINDOW = &H80&
'Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
' (ByVal hWnd As Long, ByVal nIndex 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

'Public Sub RTShowInTaskBar(ByVal hWnd As Long, ByVal bState As Boolean)
' Dim lS As Long
' lS = GetWindowLong(hWnd, GWL_EXSTYLE)
' If (bState) Then
' lS = lS Or WS_EX_APPWINDOW
' lS = lS And Not WS_EX_TOOLWINDOW
' Else
' lS = lS And Not WS_EX_APPWINDOW
' End If
' SetWindowLong hWnd, GWL_EXSTYLE, lS
'End Sub

Choses de ce genre, mais ça ne marche pas avec mon usercontrol...
Quelqu'un a fait le même genre, avec UserControls, et en voulant complètement cacher l'appli dans la TaskBar ?
Je vais voir ton appli, merci pour la réponse.
0
Adam0052
Messages postés
4
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
5 mars 2006

5 mars 2006 à 14:53
Oooops j'ai oublié un tout petit truc, pas vraiment pour faire plaisir, mais en un sens, ça me rassure. J'ai récupéré ton horloge pour voir comment elle était faite, et quand tu me parlais de mémoire, ben en fait, les deux sont à 3.5 Mo en RAM... Conclusion, du moment qu'on tape dans VB, on a de la base bien épaisse. Mon prog n'est donc pas trop lourd, pas de gaspillage de ressources.

J'ai tout revérifié de nouveau, c'est bien cet UserControl qui s'affiche en barre des tâches, et tous mes form sont en Show = False... Si je pouvais déboguer la barre des tâches... ;-)
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
5 mars 2006 à 15:52
En parlant de ressources, je te parlais pas de mémoire vive à proprement parlé (quoique déjà l'utilisation d'un usercontrol transparent, par rapport à une fenêtre découpée par région prend déjà un peu plus de mémoire vive), je te parlais surtout des hDC et hWnd gaspillé pour rien.
Tu trouve le système de transparence des usercontrol super efficace ? Sache qu'il est loin d'être "super efficace" ;) Il prend là encore pas mal de ressources. Enfin bon, ce n'est pas le problème apparement.

Un UserControl n'est pas visible dans la barre des tâches, je ne vois donc pas ce qui peut afficher l'icône...

_

<spa></spa>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Adam0052
Messages postés
4
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
5 mars 2006

5 mars 2006 à 16:19
J'ai refait comme dit, ben ça marche pas mal du tout !
Mea culpa pour mes idées fixes, et merci beaucoup !!
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
5 mars 2006 à 18:27
Lol, tu est finalement passé à un découpage de la feuille ?

Sinon, y'a encore mieux pour découper la feuille : la fonction que j'utilisais à l'époque était assez lente, va voir ma source de découpage rapide de feuille, ca devrait encore plus booster les perf !

_

<spa></spa>
0