OVH Cloud OVH Cloud

Informations supplémentaires : Error creating window handle.

8 réponses
Avatar
aitoz
Informations supplémentaires : Error creating window handle.

Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle fenetre
a partir de ma feuille MDI.
Au départ je suis dans ma feuille MDI : elle est créé a partir du module
suivant.
Public Module Main

Sub main()
Application.Run(New Main_SGSA)
End Sub

Sub endmain()
Application.Exit()
End Sub

End Module

Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le
code me permettant d'ouvrir ue fenetre.
Dim Frm_LgnBL As IGU_Livraisons
Frm_LgnBL = New IGU_Livraisons
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Frm_LgnBL.Show()

Mais voici le message d'erreur que j'ai :
Informations supplémentaires : Error creating window handle.

Si vous aviez une idée ???

8 réponses

Avatar
Stephane TUET
Juste une idée comme ça, si c'est ta form MDI qui appelle ta seconde
fenêtre essaies de mettre Frm_LgnBL.MdiParent = Me plutôt que
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm

Steph
Avatar
Fabien Bezagu
Laurent,

Je pense que ce qui ne fonctionne pas dans ton code c'est la ligne

Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm

ActiveForm est une méthode statique qui renvoie la fenêtre active. Rien ne
me laisse penser qu'ActiveForm est une fenêtre MDI mère. Si ce code est
justement dans la fenêtre MDI mère, alors pourquoi ne pas utiliser Me ?

Frm_LgnBL.MdiParent = Me

Ou si ce code est ailleurs, mon conseil est de recourrir à un singleton.

Fabien

"aitoz" a écrit dans le message de news:

Informations supplémentaires : Error creating window handle.

Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle
fenetre a partir de ma feuille MDI.
Au départ je suis dans ma feuille MDI : elle est créé a partir du module
suivant.
Public Module Main

Sub main()
Application.Run(New Main_SGSA)
End Sub

Sub endmain()
Application.Exit()
End Sub

End Module

Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le
code me permettant d'ouvrir ue fenetre.
Dim Frm_LgnBL As IGU_Livraisons
Frm_LgnBL = New IGU_Livraisons
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Frm_LgnBL.Show()

Mais voici le message d'erreur que j'ai :
Informations supplémentaires : Error creating window handle.

Si vous aviez une idée ???



Avatar
aitoz
En fait je ne vous ai pas tout dis ! lol

En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.

Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.

Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm

Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce
message d'erreur.

Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la
manière d'ouvrir et de fermer l'application en créant mon module.
Avatar
Stephane TUET
Dans ce cas ce n'est pas Me mais Me.MDIParent

Steph

"aitoz" a écrit dans le message de news:
OFz$
En fait je ne vous ai pas tout dis ! lol

En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.

Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.

Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm

Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche
ce message d'erreur.

Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer
la manière d'ouvrir et de fermer l'application en créant mon module.



Avatar
Fabien Bezagu
En fait j'ai déjà envisagé et donné la solution : un singleton.

Si tu ne connais pas ce design pattern, je t'explique rapidement : le but
est de contraindre une classe à n'avoir qu'une seule instance (ce qui est le
cas de ta MainForm).

Voici un exemple d'une classe implémentant ce design pattern :

Public Class Singleton

Private Sub New()
End Sub

Private Shared _instance As Singleton

Public Shared ReadOnly Property Instance() As Singleton
Get
If _instance Is Nothing Then
_instance = New Singleton
End If
Return _instance
End Get
End Property

Public Sub UneMethode()
End Sub
End Class

Puis, quelque part dans ton programme, tu peux invoquer la méthode de
l'instance unique :

Singleton.Instance.UneMethode()

Le fait de mettre le constructeur private permet d'éviter un accident en
instanciant un autre objet ailleurs dans ton programme...

T'as plus qu'à adpater légèrement pour la MDI mère ! :-)

Fabien

"aitoz" a écrit dans le message de news:
OFz$
En fait je ne vous ai pas tout dis ! lol

En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.

Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.

Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm

Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche
ce message d'erreur.

Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer
la manière d'ouvrir et de fermer l'application en créant mon module.



Avatar
aitoz
Merci beaucoup pour toute votre aide !!!
Je m'y mets.

Bonne journée à tous.
Avatar
aitoz
Je suis incapable de dire vraiment pourquoi ! mais j'ai trouvé l'instruction
qui fait tout marcher correctement.

Ca ressemble de pres a votre exemple !

Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm.MdiParent

Alors je ne sais pas pourquoi vraiment ca marche mieux maintenant !
Mais bon, ca fonctionne.

Si quelqu'un a une idée ??? bonne journée
Avatar
Fabien Bezagu
Oui c'est logique puisque la forme active est une fille MDI de la fenêtre
MDI mère. Ca revient à ce que suggérait Stéphane : Me.MdiParent.

Par contre, si jamais la fenêtre active est en dehors du cadre MDI, ça ne
marchera pas...Donc danger. La solution du singleton marchera toujours,
elle.

Fabien

"aitoz" a écrit dans le message de news:

Je suis incapable de dire vraiment pourquoi ! mais j'ai trouvé
l'instruction qui fait tout marcher correctement.

Ca ressemble de pres a votre exemple !

Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm.MdiParent

Alors je ne sais pas pourquoi vraiment ca marche mieux maintenant !
Mais bon, ca fonctionne.

Si quelqu'un a une idée ??? bonne journée