OVH Cloud OVH Cloud

Mode plein écran ?

6 réponses
Avatar
Nico
Bonjour, bonsoir

Je tente de développer une application qui nécéssite un mode plein
écran, en effet j'utilise le code suivant :

If mnuShowNormal.Checked = True Then
'là on applique le FullScreen
Me.Visible = False
mnuShowNormal.Checked = False
mnuShowInFullScreen.Checked = True
Me.ControlBox = False '<- ici j'obtiens une erreur
Me.Caption = ""
Me.BorderStyle = 0
Me.WindowState = 2
Me.Visible = True
End If


Erreur de compilation
Fonction ou interface est mentionnée avec restriction ou la fonction
utilise un type Automation non géré par Visual Basic.

Je ne sais pas d'où peu venir ce problème... je fais des recherches en
même temps sur google pour voir d'où cela peut venir,

Merci d'avance
Passez de bonnes fêtes de fin d'année !!!
--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)
--------------------------------------

6 réponses

Avatar
Patrice Henrio
MSDN :

ControlBox, propriété
Renvoie ou définit une valeur indiquant si le menu Système est affiché sur
une feuille aumoment de l'exécution. Cette propriété est en lecture seule
pendant l'exécution.

Syntaxe

object.ControlBox

L'espace réservé object représente uneexpression d'objet qui correspond à un
objet figurant dans la rubrique "Application".

Valeurs

La propriété ControlBox peut prendre les valeurs suivantes :

Valeur Description
True (Par défaut) Affiche le menu Système.
False Supprime le menu Système.


Remarques

Pour afficher le menu Système, vous devez également affecter à la propriété
BorderStyle de la feuille la valeur 1 (Simple fixe), 2 (Dimensionnable) ou 3
(Dialogue fixe).

Les fenêtresmodales etnon modales peuvent toutes inclure le menu Système.

Les commandes disponibles au moment de l'exécution dépendent des valeurs des
propriétés associées. Par exemple, si les propriétés MaxButton et MinButton
ont la valeur False, les commandes Agrandissement et Réduction du menu
Système sont désactivées, mais les commandes Déplacement et Fermeture de ce
menu restent disponibles.

Note Les valeurs spécifiées pour les propriétés ControlBox, BorderStyle,
MaxButton et MinButton ne prennent effet sur la feuille qu'au moment de
l'exécution.

"Nico" a écrit dans le message de news:
41d5858c$0$23337$
Bonjour, bonsoir

Je tente de développer une application qui nécéssite un mode plein écran,
en effet j'utilise le code suivant :

If mnuShowNormal.Checked = True Then
'là on applique le FullScreen
Me.Visible = False
mnuShowNormal.Checked = False
mnuShowInFullScreen.Checked = True
Me.ControlBox = False '<- ici j'obtiens une erreur
Me.Caption = ""
Me.BorderStyle = 0
Me.WindowState = 2
Me.Visible = True
End If


Erreur de compilation
Fonction ou interface est mentionnée avec restriction ou la fonction
utilise un type Automation non géré par Visual Basic.

Je ne sais pas d'où peu venir ce problème... je fais des recherches en
même temps sur google pour voir d'où cela peut venir,

Merci d'avance
Passez de bonnes fêtes de fin d'année !!!
--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)
--------------------------------------


Avatar
Christian HUBERT-HUGOUD- Xtrem7
Bonjour,

Je ne pense pas qu'on puisse changer les boutons "système" at run time
(Me.ControlBox = False )...


Cordialement

Christian Hubert-Hugoud

"Nico" a écrit dans le message de
news:41d5858c$0$23337$
Bonjour, bonsoir

Je tente de développer une application qui nécéssite un mode plein
écran, en effet j'utilise le code suivant :

If mnuShowNormal.Checked = True Then
'là on applique le FullScreen
Me.Visible = False
mnuShowNormal.Checked = False
mnuShowInFullScreen.Checked = True
Me.ControlBox = False '<- ici j'obtiens une erreur
Me.Caption = ""
Me.BorderStyle = 0
Me.WindowState = 2
Me.Visible = True
End If


Erreur de compilation
Fonction ou interface est mentionnée avec restriction ou la fonction
utilise un type Automation non géré par Visual Basic.

Je ne sais pas d'où peu venir ce problème... je fais des recherches en
même temps sur google pour voir d'où cela peut venir,

Merci d'avance
Passez de bonnes fêtes de fin d'année !!!
--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)
--------------------------------------


Avatar
Patrice Henrio
Comme dit la MSDN
"Cette propriété est en lecture seule
pendant l'exécution."


"Christian HUBERT-HUGOUD- Xtrem7" a écrit dans le
message de news: cr5iqb$31f$
Bonjour,

Je ne pense pas qu'on puisse changer les boutons "système" at run time
(Me.ControlBox = False )...


Cordialement

Christian Hubert-Hugoud

"Nico" a écrit dans le message de
news:41d5858c$0$23337$
Bonjour, bonsoir

Je tente de développer une application qui nécéssite un mode plein
écran, en effet j'utilise le code suivant :

If mnuShowNormal.Checked = True Then
'là on applique le FullScreen
Me.Visible = False
mnuShowNormal.Checked = False
mnuShowInFullScreen.Checked = True
Me.ControlBox = False '<- ici j'obtiens une erreur
Me.Caption = ""
Me.BorderStyle = 0
Me.WindowState = 2
Me.Visible = True
End If


Erreur de compilation
Fonction ou interface est mentionnée avec restriction ou la fonction
utilise un type Automation non géré par Visual Basic.

Je ne sais pas d'où peu venir ce problème... je fais des recherches en
même temps sur google pour voir d'où cela peut venir,

Merci d'avance
Passez de bonnes fêtes de fin d'année !!!
--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)
--------------------------------------






Avatar
Nico
Oui j'ai vu, bon apparemment il n'y à pas de possibilités, mais je ne
desespére pas de trouver !!

Merci pour tout

Patrice Henrio a écrit :
Comme dit la MSDN
"Cette propriété est en lecture seule
pendant l'exécution."


"Christian HUBERT-HUGOUD- Xtrem7" a écrit dans le
message de news: cr5iqb$31f$

Bonjour,

Je ne pense pas qu'on puisse changer les boutons "système" at run time
(Me.ControlBox = False )...


Cordialement

Christian Hubert-Hugoud

"Nico" a écrit dans le message de
news:41d5858c$0$23337$

Bonjour, bonsoir

Je tente de développer une application qui nécéssite un mode plein
écran, en effet j'utilise le code suivant :

If mnuShowNormal.Checked = True Then
'là on applique le FullScreen
Me.Visible = False
mnuShowNormal.Checked = False
mnuShowInFullScreen.Checked = True
Me.ControlBox = False '<- ici j'obtiens une erreur
Me.Caption = ""
Me.BorderStyle = 0
Me.WindowState = 2
Me.Visible = True
End If


Erreur de compilation
Fonction ou interface est mentionnée avec restriction ou la fonction
utilise un type Automation non géré par Visual Basic.

Je ne sais pas d'où peu venir ce problème... je fais des recherches en
même temps sur google pour voir d'où cela peut venir,

Merci d'avance
Passez de bonnes fêtes de fin d'année !!!
--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)
--------------------------------------












--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)

--------------------------------------
Avatar
François Picalausa
Hello,

Qui dit lecture seule dit contournement, non?
L'astuce consiste à supprimer ou ajouter le style WS_CAPTION:

'Les déclarations nécessaires à cet exemple sont les suivantes:

'Apis pour définir le style
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)

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

'Apis pour afficher les modifications
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
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOOWNERZORDER = &H200

'On emploiera quelques wrappers pour plus de facilité:
'State :
' 0 : désactive le Style
' 1 : active le Style
' 2 : inverse l'état du Style
Public Sub SetStyle(Hwnd As Long, Style As Long, State As Byte)
Dim lngCurrentStyle As Long

lngCurrentStyle = GetWindowLong(Hwnd, GWL_STYLE)

Select Case State
Case 0 'Désactiver
lngCurrentStyle = lngCurrentStyle And Not Style
Case 2 'Inverser
lngCurrentStyle = lngCurrentStyle Xor Style
Case 1 'Activer
lngCurrentStyle = lngCurrentStyle Or Style
End Select

SetWindowLong Hwnd, GWL_STYLE, lngCurrentStyle
End Sub

'Rafraichit la fenêtre
Public Sub RefreshWindow(Hwnd As Long)
SetWindowPos Hwnd, 0, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_FRAMECHANGED Or SWP_NOOWNERZORDER
End Sub

'Dans la form pour laquelle il faut changer la visiblité de la barre de
titre
'voici la procédure à ajouter

Public Sub SetTitleBar(Bar As Boolean)
Static MesuresX As Single
Static MesuresY As Single
Static FondX As Single
Static FondY As Single

'Const WS_MINIMIZEBOX = &H20000
'Const WS_SYSMENU = &H80000
Const WS_CAPTION = &HC00000

If MesuresX = 0 Then
MesuresX = Me.Width
MesuresY = Me.Height

Dim ScaleUnits as Integer

ScaleUnits = Me.ScaleMode
Me.ScaleMode = 1 'vbTwips
FondX = Me.ScaleWidth
FondY = Me.ScaleHeight
Me.ScaleMode = ScaleUnits
End If

If Bar Then
SetStyle Me.Hwnd, WS_CAPTION, 1
Me.Width = MesuresX
Me.Height = MesuresY
Else
SetStyle Me.Hwnd, WS_CAPTION, 0
Me.Width = FondX
Me.Height = FondY
End If

RefreshWindow Me.Hwnd
End Sub

'Exemple d'utilisation:
Private Sub Command1_Click()
SetTitleBar False
End Sub

Il faut remarquer avec cette technique que les boutons agrandir, fermer, ...
qui seraient ajoutés via
SetStyle Me.Hwnd, WS_SYSMENU, 1
ne fonctionneront pas. Il faut donc que VB ait "construit" ces boutons par
lui même.

--
François Picalausa

"Patrice Henrio" a écrit dans le message
de news:
Comme dit la MSDN
"Cette propriété est en lecture seule
pendant l'exécution."


Avatar
Nico
Bien vu François, je teste en ce moment merci de l'info, je dois encore
un peu adapté le code a mes besoin, c'est sympa de ta part. Mon niveau
en vb n'est pas très avancé mais j'ai remarqué qu'on travaille avec le
handle du formulaire; bizarrement quand le formulaire est maximiser j'ai
une erreur mais je crois que ça va aller je vais réussir à me débrouiller,


Merci pour tout
Nico

François Picalausa a écrit :
Hello,

Qui dit lecture seule dit contournement, non?
L'astuce consiste à supprimer ou ajouter le style WS_CAPTION:

'Les déclarations nécessaires à cet exemple sont les suivantes:

'Apis pour définir le style
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)

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

'Apis pour afficher les modifications
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
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOOWNERZORDER = &H200

'On emploiera quelques wrappers pour plus de facilité:
'State :
' 0 : désactive le Style
' 1 : active le Style
' 2 : inverse l'état du Style
Public Sub SetStyle(Hwnd As Long, Style As Long, State As Byte)
Dim lngCurrentStyle As Long

lngCurrentStyle = GetWindowLong(Hwnd, GWL_STYLE)

Select Case State
Case 0 'Désactiver
lngCurrentStyle = lngCurrentStyle And Not Style
Case 2 'Inverser
lngCurrentStyle = lngCurrentStyle Xor Style
Case 1 'Activer
lngCurrentStyle = lngCurrentStyle Or Style
End Select

SetWindowLong Hwnd, GWL_STYLE, lngCurrentStyle
End Sub

'Rafraichit la fenêtre
Public Sub RefreshWindow(Hwnd As Long)
SetWindowPos Hwnd, 0, 0, 0, 0, 0, _
SWP_NOSIZE Or SWP_NOMOVE Or SWP_FRAMECHANGED Or SWP_NOOWNERZORDER
End Sub

'Dans la form pour laquelle il faut changer la visiblité de la barre de
titre
'voici la procédure à ajouter

Public Sub SetTitleBar(Bar As Boolean)
Static MesuresX As Single
Static MesuresY As Single
Static FondX As Single
Static FondY As Single

'Const WS_MINIMIZEBOX = &H20000
'Const WS_SYSMENU = &H80000
Const WS_CAPTION = &HC00000

If MesuresX = 0 Then
MesuresX = Me.Width
MesuresY = Me.Height

Dim ScaleUnits as Integer

ScaleUnits = Me.ScaleMode
Me.ScaleMode = 1 'vbTwips
FondX = Me.ScaleWidth
FondY = Me.ScaleHeight
Me.ScaleMode = ScaleUnits
End If

If Bar Then
SetStyle Me.Hwnd, WS_CAPTION, 1
Me.Width = MesuresX
Me.Height = MesuresY
Else
SetStyle Me.Hwnd, WS_CAPTION, 0
Me.Width = FondX
Me.Height = FondY
End If

RefreshWindow Me.Hwnd
End Sub

'Exemple d'utilisation:
Private Sub Command1_Click()
SetTitleBar False
End Sub

Il faut remarquer avec cette technique que les boutons agrandir, fermer, ...
qui seraient ajoutés via
SetStyle Me.Hwnd, WS_SYSMENU, 1
ne fonctionneront pas. Il faut donc que VB ait "construit" ces boutons par
lui même.





--
--------------------------------------
Frost

WebMaster
Administrateur de réseaux
Programmeur (JUST4FUN)

--------------------------------------