Problème de maximisation d'un form none, help please

yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009 - 29 mars 2007 à 23:34
yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009 - 31 mars 2007 à 14:57
bonjour

je developpe une application en vb 2005 avec une interface entiérement "skinable"
- j'ai utilsé une forme "none" pour la fenetre
- une image  comme barre de titre 
- des boutons pour : Fermer, Agrandire, Reduir
Mais j'ai un petit souci lors de la maximisation de la forme :

le code suivant est sur le Bouton Agrandire:

Private
Sub Agrandire_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
Agrandire.Click

Me.WindowState = FormWindowState.Maximized

End
Sub

la barre des tâches de windows se masque et la forme remplie entièrement l'ecran ?

Est ce que qqn peut m'aider et me montrer comment faire pour maximisé une forme "none" 
sans que la barre des tâches de windows soit masquer

MERCI d'avance

 

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2007 à 08:58
a toi alors de la déplacer convenablement, en tnant compte de la position de la barre des taches, en tenant compte des AppBarres qui pourraient etre présentes, et surtout du fait que tout est susceptible de bouger, et que ta form devra donc être déplacée en conséquence...

une autre solution, est de ne pas mettre en None, et de redessiner (subclassing) ta barre de titre toi même....

WM_NCPAINT (entre autres)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 mars 2007 à 18:05
En Vb6, ça marche avec ça :


BorderStyle=Sizable
Caption=""  'vide
ControlBox=False
MaxButton=True
MinButton=True
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 mars 2007 à 18:19
je crois que j' ai parlé trop vite !
Oubliez ce ue j' ai dit...

bonne fin de soirée
0
yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009
30 mars 2007 à 20:05
Merci pour vos réponses
0

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

Posez votre question
yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009
30 mars 2007 à 20:22
Bon Ba
Finalement j'ai utilisé la solution Suivante :

PrivateSub Agrandire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles
Agrandire.Click

Me.Width = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width

Me.Height = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height

Me.Location =
New Point(0, 0)
EndSub

la barre des Tâches de windows ne se masque pas mais la fenetre reste deplaçable
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2007 à 22:51
oui, c'est bie ce qu'il faut faire....

le soucis est que la 'WorkingArea' peut changer a tout moment ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
31 mars 2007 à 01:27
y' a t- il une sub Form_Resise en net ? comme en vb6
0
yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009
31 mars 2007 à 02:51
ou il y en a  dans la liste déroulante des événements des procédures

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
      
'ta procedure qui se déclanche lorsque tu redimentionne le formulaire
'qui est trés utile par exemple pour l'agencement des contrôles au sein d'un formulaire

End Sub
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
31 mars 2007 à 04:03
tu peux alors mettre ton code dans cette sub,
pour que ta fenêtre garde toujour les mêmes dimentions
quoiqu' il arrive qui puisse les modifier autrement que par
Agrandire.Click




Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If  (Me.Width = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width) And _
(Me.Height = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height) Then Exit sub


 'ce test est pour éviter que ton événement ne se déclenche une seconde fois


 'ensuite tu peux la redimensionner
Me.Width = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width
Me.Height = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height
Me.Location = New Point(0, 0)


EndSub


Je ne connais pas trop Vb2005, mais c' est ce que je fais avec VB
J' ai peut être écrit des conneries, à toi de voir si ça correspond
0
yassirguitare Messages postés 29 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 3 juin 2009
31 mars 2007 à 14:57
Pardon j'ai pas VB6 et j'ai trés trés peu travailler Avec, et j'ai tester ton code Chaibat05 ca ne change rien chez moi

en faite tant qu'on y est j'envoie mon bout de code qui me permet de gerer ma forme NONE a peut prés comme une sizable

__Ecriture des Procedures__________________________________
' la procedure Agrandir_WinMain() permet de mettre la fenetre fullScreen


Private Sub Agrandir_WinMain()
        Me.Width = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width

       'meWidth renvoie 1024 si tu as par exemple un ecran 17'
        Me.Height = Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height
       'meWidth renvoie 765 - (hauteur de la barre des tâche de windows) si tu     as par exemple un ecran 17'
        Me.Location = New Point(0, 0)
        'location permet de placer le coin superieur gauche de la fenetre au coin         superieur gauche de l'ecran
    End Sub
_________________________________________________________________
'cette procedure permet de revenire a l'etat Inferieur
    Private Sub EtatInferieur()
        Me.Width = 800
      ' largeur de la forme 800 px
        Me.Height = 600
       ' hauteur de la forme 600 px
        Dim positionLargeur As Integer
        Dim positionHauteur As Integer
        positionLargeur =   (Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width /2) - (Me.Width / 2)
          ' la position de la forme en Axe des abscisses est au centre
     positionHauteur -= -50
       ' position de la hauteur et 50 px plus bas du haut del'ecran
    Me.Location = New Point(positionLargeur, positionHauteur)
    End Sub

__Appel des pocedures par le click sur les boutons appropriés_____________

Private Sub BoutonAgrandire _Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Agrandir_WinMain()
End Sub

Private Sub BoutonEtatInferieur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Agrandir_WinMain()
End Sub

Private Sub BoutonReduire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        me.WindowState =FormWindowState.Minimized
End Sub

Private Sub BoutonFermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Me.Close()
 End Sub

______Déplacement de la form None en cliquant sur un image Picturebox qui remplace la barre de titre

'deplacement de la WinMain "" NB : ce code je l'ai trouver sur CodeSources
Private Declare Function ReleaseCapture Lib "user32" () As Integer
    Private Const HTCAPTION As Integer = 2
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1S
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer

'le lier a un evenemt MouseDown sur une pictureBox par exemple
Private Sub TitleBarPictureBox_MainWin_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TitleBar_MainWin.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ReleaseCapture()
            SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0)
        End If
    End Sub

Redimentionement de la form None NB : ce code je l'ai trouver sur CodeSources

 Private Const WS_EX_STATICEDGE As Integer = &H20000
    Private Const WS_SIZEBOX As Integer = &H40000
    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim CP As CreateParams = MyBase.CreateParams
            CP.ExStyle = WS_EX_STATICEDGE
            CP.Style = WS_SIZEBOX
            Return CP
        End Get
   End Property
 
voilà c'est comme ça que ma form "none" et gérer
j'espére que ça va aider qqn ou lui montrer une voie pour une meilleur source que celle-ci
0
Rejoignez-nous