IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

directcast d'une structure


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 150
    Par défaut directcast d'une structure
    Bonjour,

    Suite à un post récent, j'ai déclaré une structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <StructLayout(LayoutKind.Sequential)>
        Friend Structure WindowPlacement
            Friend Property Length As Integer
            Friend Property Flags As Integer
            Friend Property ShowCommand As Integer
            Friend Property MinPosition As Point
            Friend Property MaxPosition As Point
            Friend Property NormalPosition As Rectangle
        End Structure
    Quand je déclare un objet utilisant cette structure, j'ai ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MonWP As New WindowPlacement()
                                ' Affectation des valeurs par défaut de MonWP
                                With MonWP
                                    .Length = Marshal.SizeOf(MonWP)
                                    .ShowCommand = 0
                                    .Flags = 1
                                    .MinPosition = New Point(-1, -1)
                                    .MaxPosition = New Point(-1, -1)
                                    .NormalPosition = New Rectangle(10, 10, 100, 100)
                                End With
    est-il possible de faire une seule ligne du genre: Dim MonWP as WindowPlacement = directcast(quelquechose, quelquechose)?

    Merci d'avance de vos réponses

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    je vois pas pourquoi tu parle de DirectCast alors y'a juste rien à caster ..

    mais si je me trompe pas je pense que ce que toi tu veux, c'est un [Constructor] pour ta structure, comme ça :

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Friend Structure WindowPlacement
            Friend Property Length As Integer
            Friend Property Flags As Integer
            Friend Property ShowCommand As Integer
            Friend Property MinPosition As Point
            Friend Property MaxPosition As Point
            Friend Property NormalPosition As Rectangle
     
    	Public Sub New(ByVal _Length As Integer, ByVal _Flags As Integer, ByVal _ShowCommand As Integer, ByVal _MinPosition As Point, ByVal _MinPosition As Point, ByVal _NormalPosition As Rectangle)
    		Length = _Length
    		Flags = _Flags
    		ShowCommand = _ShowCommand
    		MinPosition = _MinPosition
    		MaxPosition = _MaxPosition
    		NormalPosition = _NormalPosition
            End Sub		
    End Structure
    maintenant au lieu d'utiliser un With tu fait juste : Dim MonWP as new WindowPlacement(Marshal.SizeOf(MonWP), 0, 1, New Point(-1, -1), New Point(-1, -1), Rectangle(10, 10, 100, 100))

    --> Et si maintenant tu veux avoir des valeurs par défaut à la création de ta structure, et bah de base en vb.net tu peux pas, tu peux avec les [Objects](classes) mais pas avec les structures
    Solution --> Tu rajoute une fonction shared (static) à ta structure qui te crée une structure avec ses valeurs par défaut, comme ça :

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Friend Structure WindowPlacement
            Friend Property Length As Integer
            Friend Property Flags As Integer
            Friend Property ShowCommand As Integer
            Friend Property MinPosition As Point
            Friend Property MaxPosition As Point
            Friend Property NormalPosition As Rectangle
     
    	Public Sub New(ByVal _Length As Integer, ByVal _Flags As Integer, ByVal _ShowCommand As Integer, ByVal _MinPosition As Point, ByVal _MinPosition As Point, ByVal _NormalPosition As Rectangle)
    		Length = _Length
    		Flags = _Flags
    		ShowCommand = _ShowCommand
    		MinPosition = _MinPosition
    		MaxPosition = _MaxPosition
    		NormalPosition = _NormalPosition
            End Sub
     
    	Public Shared Function Default() as WindowPlacement
    		return new WindowPlacement(Marshal.SizeOf(MonWP), 0, 1, New Point(-1, -1), New Point(-1, -1), Rectangle(10, 10, 100, 100))
    	End Function
    End Structure
    et maintenant tu fait juste : Dim MonWP = WindowPlacement.Default()

    et voilà

  3. #3
    Membre confirmé Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 150
    Par défaut
    Bonjour themine702, merci pour ta réponse.

    Ben dit comme ça c'est super simple, je ne savais pas qu'on pouvait coller un Sub New à l'intérieur d'une Structure, moi je ne fais ça que quand je crée une Classe.

    Je vais me coucher moins couillon ce soir.

    Sympa d'avoir pris du temps pour répondre, merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sizeof() d'une structure
    Par tut dans le forum MFC
    Réponses: 12
    Dernier message: 29/08/2006, 18h21
  2. [Initialisation] Remplir une structure une fois
    Par Kimael dans le forum Langage
    Réponses: 14
    Dernier message: 08/06/2004, 15h33
  3. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  4. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 15h47
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo