Programme qui ferme mal !

Résolu
Onyl Messages postés 4 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 avril 2007 - 26 avril 2007 à 22:49
Onyl Messages postés 4 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 avril 2007 - 27 avril 2007 à 19:58
Bonjour !

Et oui encore une question d'un nouveau !

J'ai actuellement un petit souci avec un programme sous VB6 qui est le suivant :  lorsque je clique en haut à droite, dans une userform, sur la croix classique de windows pour fermer mon programme, il se ferme bien mais il reste "actif" dans le gestionnaire de programme et m'empêche de quitter correctement windaube...

J'ai tenté de chercher ici une solution (genre enlever la croix ca serait pô mal mais le peu que j'ai trouvé, en autre un code de Mortalino, ne fonctionne que sous vba...).

Quelqu'un aurait-il une version du code de Mortalino pour vb ou une idée pour résoudre cet odieux problème ?

En vous remerkiant par avance, veuillez agréer,...

Onyl

7 réponses

Onyl Messages postés 4 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 avril 2007
27 avril 2007 à 15:32
bon mon petit Onyl, tu réfléchis 30s et tu vois que QueryUnload existe pas pour une Userform sous vb6 alors tu écris ça :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
End Sub

et ça marche !
(effectivement on peux rajouter un message pour prévenir l'utilisateur qu'il doit quitter en cliquant sur un bouton quitter du programme !)

Merci à vous, yihhaaaaaaa !
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 avril 2007 à 22:53
Salut,

En vb6 pour la croix, tu as la possibilité de mettre Cancel à True :
Place aussi un message pour dire d'appuyer sur ton bouton fermer

Private Sub Form_Unload(Cancel As Integer)
   Cancel = True
End Sub

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
26 avril 2007 à 22:55
Salut,

Pour  enlever la croix, voici :

' Déclare fonction pour désactiver la croix systèm d'une Frm
 Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
 Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long


 Public Const MF_BYCOMMAND = &H0
 Public Const SC_CLOSE = &HF060
' **********************************************************
Public Sub SetSystemCrossOff(MyFrame As Form)


     Dim hMenu As Long
   
    ' Retire la croix fermer de la fenêtre
     hMenu = GetSystemMenu(MyFrame.hwnd, 0)
     Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
        
        
End Sub

Utilisation :
    ' Appelle de la function qui désactive la croix
     SetSystemCrossOff Me


A+
Exploreur


 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 avril 2007 à 23:32
Sans enlever la croix, tu peux utiliser
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
UnloadMode sera 0 si tu cliques sur la croix, autrement 1

MPi
0

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

Posez votre question
Onyl Messages postés 4 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 avril 2007
27 avril 2007 à 15:14
Tout d'abord merci pour vos réponses !

Bon y'a rien qui marche avec mon code car le problème je pense est qu'il vient de vba (et oui j'avais écrit userform ) !

@Mortalino : ton code marche dans une form normale mais en fait j'ai fait le code sous vba au départ parce que je pensais devoir me
servir d'une feuille Excel pour des données... En fait j'ai réussi à
tout intègrer dans vba mais ensuite j'ai importé mes userforms sous vb car mon but
est d'avoir un programme en .exe puis de créer un fichier setup (ça ça
marche). Donc ton code marche malheureusement pas avec une userform importée sous vb6.

@Exploreur : la par contre ton code semble pas marcher, je le copie au bon endroit (dans une form vb6) et direct les lignes commençant par Public se mettent en rouge (!) et ensuite j'ai un message d'erreur lorsque je tente d'exécuter (Erreur de compilation : des constantes, chaînes de longueur fixe,... ne sont pas autorisées comme membre public de modules objet."). J'appuie sur mon "semble" car le problème vient surement de moi !

@Mpi : même problème que pour le code de Mortalino je pense !

Donc voilà, est ce que le mieux est de tout refaire sous vb6 pour que les problèmes s'annulent ou est ce qu'il y a moyen de convertir mes userforms importées en form classiques où un bon code marche ?

Encore merci, désolé pour mon manque de connaissances en vb !

Onyl
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
27 avril 2007 à 19:41
Attention   /!\
UserForm VBA Office

Si tu déploies une exécutable (donc avec VB) contenant des UserForms (donc des contrôles de la suite Office) il faut Obligatoirement que le PC sur lequel tu installes ton exe aie la suite Office.
Pourquoi ?
--> licence Office. (et oui, vu que c'est payant, tu ne peux pas redistribuer comme ça un contrôle ayant un copyright)
Renseigne toi avant

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Onyl Messages postés 4 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 27 avril 2007
27 avril 2007 à 19:58
ok merci pour le conseil !
0
Rejoignez-nous