Salut
Je croyais connaître un certain nombre de chose dans la programmation, ou en tout cas je ne pensais pas buter sur un problème comme celui là.
Je ne parviens pas a quitter/finir se programme, il reste toujours en tâche de fond malgré la mise du drapeau ActionCurs à False.
En fait la sortie de la boucle semble bien fonctionner, le Unload aussi, mais dans l’éditeur VB6, il faut que je l’arrête pour entrer effectivement dans le code.
Et le pire, c’est que si je change l’affichage de sortie, du label à la barre de titre du Form, plus de problème.
Quelqu'un saurait il ou je fais une erreur ou cela est il un bug de VB6 ?
Voici une portion de code qui reproduit le phénomène , sur un Form, 2 CommandButton et un Label.
Merci de vos expériences.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Option Explicit Private Type POINTAPI x As Long y As Long End Type 'pour lire les coordonnées du deplacement du curseur Private Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINTAPI) As Long Dim ActionCurs As Boolean Private Sub Form_Load() Command1.Move 120, 120, 1215, 255: Command1.Caption = "Action" Command2.Move 1680, 120, 1215, 255: Command2.Caption = "Quitter" Label1.Move 120, 480, 2715, 255: Label1.Caption = "" End Sub Private Sub Command1_Click() 'lire/ne pas lire les coordonnées du deplacement du curseur ActionCurs = Not ActionCurs If ActionCurs Then SurveilleCurseur End Sub Private Sub SurveilleCurseur() Dim retval As Long 'retour d'appel à la fonction GetCursorPos Dim PosCurseur As POINTAPI 'memo des valeurs de recuperation du dernier appel à GetCursorPos Do If ActionCurs Then retval = GetCursorPos(PosCurseur) 'lit la position du curseur, recuperation des coordonnées dans PosCurseur DoEvents 'Me.Caption = "Horizontal = " & CStr(PosCurseur.x) & " Vertical = " & CStr(PosCurseur.y) Label1.Caption = "Horizontal = " & CStr(PosCurseur.x) & " Vertical = " & CStr(PosCurseur.y) Else Exit Do End If DoEvents Loop End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Unload(Cancel As Integer) 'si ActionCurs = true, mettre fin à la boucle de surveillance curseur If ActionCurs Then ActionCurs = False End Sub
Motif de l'édit:
UC utilisé quand sortie affichage sur Label = 55 %
sur barre de titre = 99 %
Pour les deux, quand on quitte en cours de surveillance curseur, le programme disparait des applications mais reste en tant que processus dans le gestionnaire de tâches de windows
Aucun problème si on quitte après avoir arrêté la surveillance depuis le programme.
Je vais faire des essais avec un SetTimer/KillTimer
Partager