cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
4 août 2009 à 12:28
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
4 août 2009 à 12:39
Salut à tou(tes)
Je suis confronté à un problème : Le UserControl (UC) que j'ai installé sur ma frmMain perd son Parent !
Inimaginable, non ?
Voilà le contexte :
Mon projet démarre avec un Sub Main
Dans la Sub Main, je charge la forme principale de mon projet (frmMain)
Sur cette forme, mon UC (le SysTrayBalloonque j'ai posté récemment)
Dans cette configuration, pas de souci, cela fonctionne.
Ensuite, depuis ma frmMain_Load, je charge une autre forme de SplashScreen, c'est à dire une forme qui se déchargera seule après une petite tempo.
Tant que la frmSplash est affichée, le UC de frmMain fonctionne. Dans son fonctionnement, il envoie des ordres à sa forme hôte, frmMain avec la commande :
SetForegroundWindow(UserControl.Parent.hWnd)
Dès que la frmSplash est "Unloadée", le UC perd son Parent, devient orphelin, le pauvre, le UserControl.Parent.hWnd renvoie alors 0.
Le frmMain reçoit toujours les RaiseEvent envoyés par le UC.
Lors la réception de cet event, le frmMain est sensé faire apparaitre un menu contextuel avec la commande Popup. Cette commande ne fonctionne plus alors que le programme passe bien dessus. Je pense que cela se résoudra lorsque j'aurai compris pourquoi le lien de parenté disparait.
J'y perds mon latin ...
Comment un UC peut-il perdre son Parent ?
Bizarre, non ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 août 2009 à 12:39
Bon, ça y est, j'ai compris ce qui se passe.
Une erreur humaine, bien sûr :
Dans la Sub Main, je charge ma frmMain en vbModal
Dans le Form_Load de ma frmMain, je charge frmSplash en mode vbModeless.
Or, on ne peut pas charger une forme non modale depuis une forme modale.
L'erreur apparait quand on tente cette manip APRES le Form_Load, mais ne déclenche pas d'erreur durant cette séquance.
Donc, il m'a suffit de charger ma frmMain en non modal pour corriger le tir.
Vous pouvez reprendre un apéro, c'est moi qui vous l'offre.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)