Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

close, minimize, restore button d'une form

2 réponses
Avatar
michael
bonjour,
je voudrais savoir s'il existe des événements associés au close button,
minimize button etc... d'une form, comment peut t'on les rendre innacessibles
ou même absents (genre on ne peux pas redimensionner la form ou la fermer).
Car j'ai fais un beau programme.... avec une petite icone dans le systray,
mais je voudrais que si je clique sur minimize ou meme close button, il rende
la form invisible et tourne en tache de fond...
Peut etre y a t'il une astuce pour contourner le problème???
merci d'avance

2 réponses

Avatar
Jacques93
Bonjour michael,
michael a écrit :
bonjour,
je voudrais savoir s'il existe des événements associés au close button,
minimize button etc... d'une form, comment peut t'on les rendre innacessibles
ou même absents (genre on ne peux pas redimensionner la form ou la fermer).
Car j'ai fais un beau programme.... avec une petite icone dans le systray,
mais je voudrais que si je clique sur minimize ou meme close button, il rende
la form invisible et tourne en tache de fond...
Peut etre y a t'il une astuce pour contourner le problème???
merci d'avance



Plusieurs propriétés agissent sur la barre de titre, et les boutons qui
y sont présents :

BorderStyle (avec ControlBox = True et Caption Non vide) :
None Pas de barre de titre / pas de boutons
Fixed Single Bouton de fermeture
Sizable Bouton de fermeture / Minimize / Maximize
Fixed Dialog Bouton de fermeture
Fixed ToolWindow Bouton de fermeture (Petite barre de titre)
Sizable ToolWindows Bouton de fermeture / Minimize / Maximize
(Petite barre de titre)

ControlBox :
True Boutons dépendants de BorderStyle
False Aucun bouton

Caption :
Vide Pas de barre de titre si ControlBox = False
Non Vide Barre de titre avec boutons dépendant de
BorderStyle

MinButton :
True Bouton de réduction
False Pas de bouton de réduction

MaxButton :
True Bouton d'agrandissement
False Pas de bouton d'agrandissement


Ces propriétés servant dès la création d'une fenêtre, elles sont en
lecture seule au moment de l'execution, il faut alors passer par les APÏ's

ws = GetWindowLong(hWnd, GWL_STYLE)
x = SetWindowLong(hWnd, GWL_STYLE, ws)

et / ou les API's liés au menu système :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus.asp


Pour interdire le redimensionnement d'un feuille, soit tu mets :

BorderStyle = Single

sinon dans l'événement Resize, par exemple avec BorderStyle = Sizeable :

Private Sub Form_Resize()
Me.Width = 5000
Me.Height = 5000
End Sub

Cela permet entre autre d'imposer des valeurs mini/maxi à la fenêtre


Pour interdire la fermeture d'une fenêtre, soit tu mets :

ControlBox = False

sinon dans l'événement QueryUnload

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
Cancel = True
End If
End Sub


Enfin pour détecter la réduction d'une fenêtre, et la cacher :

Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
Me.Hide
End If
End Sub

il vaut mieux avoir prévu de la réafficher par le Systray.


PS : Il y a également la propriété ShownInTaskbar qui est influée par le
type de fenêtre.

--
Cordialement,

Jacques.
Avatar
michael
merci pour ces informations
j'ai tout de même encore qqe petits détails qui me viennent a l'esprit
Lorsque je veux restaurer par le systray, comme il y a un 'resize', il
n'affiche pas la form, j'utilise:

Private Sub Restor_Click()

Form1.Show

End Sub

Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
Me.Hide
End If

End Sub

existe t'il un événement sur le close button?? parcqu'a lors je peux
utiliser le close button pour mettre dans le systray
pour le QueryUnload, je ne comprend pas trop a quoi il sers...
merci d'avance



"Jacques93" a écrit :

Bonjour michael,
michael a écrit :
> bonjour,
> je voudrais savoir s'il existe des événements associés au close button,
> minimize button etc... d'une form, comment peut t'on les rendre innacessibles
> ou même absents (genre on ne peux pas redimensionner la form ou la fermer).
> Car j'ai fais un beau programme.... avec une petite icone dans le systray,
> mais je voudrais que si je clique sur minimize ou meme close button, il rende
> la form invisible et tourne en tache de fond...
> Peut etre y a t'il une astuce pour contourner le problème???
> merci d'avance

Plusieurs propriétés agissent sur la barre de titre, et les boutons qui
y sont présents :

BorderStyle (avec ControlBox = True et Caption Non vide) :
None Pas de barre de titre / pas de boutons
Fixed Single Bouton de fermeture
Sizable Bouton de fermeture / Minimize / Maximize
Fixed Dialog Bouton de fermeture
Fixed ToolWindow Bouton de fermeture (Petite barre de titre)
Sizable ToolWindows Bouton de fermeture / Minimize / Maximize
(Petite barre de titre)

ControlBox :
True Boutons dépendants de BorderStyle
False Aucun bouton

Caption :
Vide Pas de barre de titre si ControlBox = False
Non Vide Barre de titre avec boutons dépendant de
BorderStyle

MinButton :
True Bouton de réduction
False Pas de bouton de réduction

MaxButton :
True Bouton d'agrandissement
False Pas de bouton d'agrandissement


Ces propriétés servant dès la création d'une fenêtre, elles sont en
lecture seule au moment de l'execution, il faut alors passer par les APÏ's

ws = GetWindowLong(hWnd, GWL_STYLE)
x = SetWindowLong(hWnd, GWL_STYLE, ws)

et / ou les API's liés au menu système :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus.asp


Pour interdire le redimensionnement d'un feuille, soit tu mets :

BorderStyle = Single

sinon dans l'événement Resize, par exemple avec BorderStyle = Sizeable :

Private Sub Form_Resize()
Me.Width = 5000
Me.Height = 5000
End Sub

Cela permet entre autre d'imposer des valeurs mini/maxi à la fenêtre


Pour interdire la fermeture d'une fenêtre, soit tu mets :

ControlBox = False

sinon dans l'événement QueryUnload

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
Cancel = True
End If
End Sub


Enfin pour détecter la réduction d'une fenêtre, et la cacher :

Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
Me.Hide
End If
End Sub

il vaut mieux avoir prévu de la réafficher par le Systray.


PS : Il y a également la propriété ShownInTaskbar qui est influée par le
type de fenêtre.

--
Cordialement,

Jacques.