DesktopWindow particularité de la fenêtre du bureau

Résolu
zavier666 Messages postés 266 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 30 avril 2009 - 13 déc. 2005 à 20:29
zavier666 Messages postés 266 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 30 avril 2009 - 14 déc. 2005 à 19:33
bonjour,


je suis à la recherche d'un api style "setwindowpos" me permettant de spécifier le handle d'une fenêtre qui aura du coup un propriété dont j'ai très besoin: la fenêtre ne passe pas au premier plan lorsque l'on clique dessus ou qu'elle obtient le focus (comme la desktop window) mais reste valide (donc pas de enablewindow).

en gros: comment faire un "always on bottom"

j'ai beaucoup cherché sur internet, mais a priori y'a rien du tout, alors je suis interressé par tout indice qui me permettrait de trouver cette fonction ou de la simuler !

merci!!!!!!!!!!!!!!!!!!!

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 déc. 2005 à 20:45
Salut
Je ne sais pas où tu as cherché, mais assuremment pas au bon endroit.
"API-Guide" dispo sur www.allapi.net est une source d'info importante !

Essaye ça dans un module :

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 uFlags As Long) As Long


' Constantes de SetWindowPos :
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2


Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
'


Public Sub SetTop(Form As Form, _
ByVal Topmost As Boolean)

Dim hWndInsertAfter As Long

If Topmost Then
hWndInsertAfter = HWND_TOPMOST
Else
hWndInsertAfter = HWND_NOTOPMOST
End If

SetWindowPos Form.hWnd, hWndInsertAfter, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE

End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
zavier666 Messages postés 266 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 30 avril 2009 1
14 déc. 2005 à 12:57
Je te remercie de cette réponse au combien rapide, cependant,

lorsque j'applique cette fonction à la lettre, ma fenêtre reprend le premier plan lorsque je clique dessus, or c'est ce qu'elle ne doit absolument pas faire:
la fenêtre doit rester en arrière plan quoi qu'il arrive, tout en restant utilisable (bouton et autres controles restent fonctionnels).

Microsoft doit utiliser pour windows une fonction qui permet au bureau de toujours rester en arrière plan, donc je suppose que cette fonction doit pouvoir aussi être utilisée en VB???????
0
zavier666 Messages postés 266 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 30 avril 2009 1
14 déc. 2005 à 19:33
Bon, j'ai trouvé ce que je cherchais,


l'api setwindowpos me permettait de mettre la fenêtre en arrière plan,


il me restait juste à trouver le bon évènement qui ferait en sorte que celle-ci y reste tout le temps:cet évènement, c'est Paint(), en effet à chaque fois que la form subit cet évènement (c'est à dire quasi tout le temps) je lui demande au travers de setwindowpos de la mettre en arrière plan: résultat elle y reste tout le temps, alors merci Jack:

Zav'
________________________________________________________________________


Les API ont souvent leur raison que ma raison ignore (philosophie antique remise au gout du jour)
0
Rejoignez-nous