Comment reproduire un msgbox?

barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005 - 18 août 2003 à 16:20
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005 - 18 août 2003 à 18:58
Bjr,
je veux personnaliser mon propre msgbox, c à dire que j'ai fait une interface avec des boutons flash "oui" et "non", mais le problème est que je n'arrive pas faire stopper l'appli sur cette form pour que la personne puisse valider par oui ou par non avant que le programme ne continu.
Pour plus d'info je fais sur load des vérifactions sur des options coché ou pas et c la que mon msgbox est chargé mais l'appli continue de ce charger avant la réponse.

J'éspère que mes explications vont vous permettre de m'aider. N'exité pas pour plus d'info je suis connecté.

Merci d'avance, a bientot.
Barth

12 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 août 2003 à 16:56
salut

perso j'opterais pour un mutex :
dans declaration de ta form message:
public hMutex As Long

dans le form load de ton messagebox tu mets :
hMutex = CreateMutex(ByVal 0&, 1,app.title & "Stop")

dans form_unload :
ReleaseMutex hMutex
CloseHandle hMutex

apres ton appel taformmessage.show :

Dim hMutex as long
do
hMutex = CreateMutex(ByVal 0&, 1,app.title & "Stop")
loop until hMutex
ReleaseMutex hMutex
CloseHandle hMutex
hMutex = 0

voila

ShareVB
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 17:07
Salut , c barth
Merci pour ton aide je vais tester ton code dans un instant mais je ne comprend pas ce que tu apels "mutex"?

Bon pour le reste je vais gratter, je pense que je vais comprend, ce que tu m'as mis.

Encore merci et a bientot ShareVb
8-)
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 17:19
C encore barth, je viens de tester ton code mais j'ai un problème avec "createmutex" ca me génère un message d'erreur 'procedure ou fonction non définié', je ne comprend pas pourquoi, ca me fait sa. Si tu peux m'aider.

Il ne faut pas que je la déclare dans un module?

Bon je continue de chercher.
merci, a+ barth
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 août 2003 à 17:22
salut

il existe plusieurs méthode de synchronisation des threads d'une application : en somme chaque fenetre a sa propre boucle de message qui constitue le thread de la fenetre :
pour faire arreter l'execution de la fenetre qui appelle ton messageboxform il faut attendre que le thread de cette fenetre soit arreté.

pour cela : ton messagebox doit créer un "objet" unique dans ta session windows : tant que ton messagebox n'a pas "relaché" l'objet, tu ne peux pas le prendre : la fentre message est affichée.
Ton messageboxform relache "objet" indicant à ta feuille appelante que la fenetre messagebox est fermée

on peut alors reprendre le cours du programme

voila

ShareVB
0

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

Posez votre question
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 août 2003 à 17:25
salut

oui createmutex,releasemutex et closehandle sont des APIs que tu peux déclarer via la visionneuse d'APIs

voila

ShareVB
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 17:29
Merci , bcp c super sympat pour toutes c explications, désoler de t'avoir un peu pris de ton tps.
Encore merci et a bientot.
Super
A+ Barth
:blush)
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 17:48
Je désoler, c encore moi mais c plante tjrs, koique je fasse j'ai tjrs sur createmutex une erreur du type "porcedure sub ou function non définie" est je n'arrive pas a trouver le problème. Pour tps c ce qu'il me faut d'apres tes explications c exactement ce que je cherche.

Bon surment a plustard.
Désoler, merci a+ Barth
:shy)
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 août 2003 à 17:53
salut

tu mets ca dans un module :
Public Declare Function ReleaseMutex Lib "kernel32" Alias "ReleaseMutex" (ByVal hMutex As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

voila

ShareVB
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
18 août 2003 à 18:41
Ca va peut-être avoir l'air con ce que je vais écrire, mais avec vos histoire de Mutex, ça sert à quoi les feuilles modale ?

Le texte qui suit est extrait de l'aide en ligne de la méthode Show de l'objet Form :

"Lorsque la méthode Show affiche une feuille non modale, le code suivant est exécuté au fur et à mesure qu'il se présente. Lorsque la méthode Show affiche une feuille modale, le code qui suit n'est exécuté que lorsque la feuille est masquée ou déchargée.

Lorsque la méthode Show affiche une feuille modale, aucune entrée (à l'aide du clavier ou d'un clic de la souris) ne peut être effectuée, sauf si elle est destinée à des objets contenus dans cette feuille. Le programme doit masquer ou décharger la feuille modale (généralement en réponse à une action de l'utilisateur) avant qu'une entrée puisse être effectuée dans une autre feuille. Un objet MDIForm ne peut pas être modal."

Alros un "MessageBoxForm.Show vbModal" devrait suffir à résoudre ton pb.

Christophe R.
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 18:47
Bon j'ai eu quelques problèmes avec les fonctions a déclarer dans le module, j'ai eu un plantage avec :

Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

J'ai remplacer le texte souligné par "as long" sinon ca plantais.
Maintenant ca marche mais ca ne fait pas ce que sa doit faire, c a dire que j'appel mon formmessage_box mais si apres le code que tu m'as donné je met un "msgbox" il s'execute avant le déchargement du formmessage_box.

Voila j'ai bidouiller mais sans résultat, bon bonne fin de journée. Surment à demain
Chao barth
Encore Merci
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
18 août 2003 à 18:52
salut

effectivement comme le signal crenaud76 il y a une méthode beaucoup plus simple effectivement : tonformmessagebox.show vbModal

errare humanum est...

voila

ShareVB
0
barth707 Messages postés 73 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 8 juin 2005
18 août 2003 à 18:58
Ok, merci sa marche , pourtant je l'ai vu ce code tout à l'heure en debut d'aprem, sa ne marchais pas la je l'ai fais sur un projet tout vide, est ca marche. Merci bien pour ton aide j'ai bien compris tes explications mais sans succès, koique moi sa m'a apris des trucs.

Encore merci et comme je dis a chaque fin de message:
surment a bientot.
Chao , c cool
:)
Barth le marsupi l'ami
0
Rejoignez-nous