Problème avec Form_MouseMove

Résolu
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011 - 6 nov. 2006 à 18:39
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011 - 7 nov. 2006 à 06:49
Bonjours, depuis quelques je cherche un problème à mon problème mais je ne trouve pas de réponse donc je me dirige vers vous avec l'espoir que mon problème soit résolut. Voici le problème :
Ma procédure Form_MouseMove ne répond plus, je n'ai pas aux programmes qu'il y a à l'intérieur et je ne c'est pas pourquoi donc si quelqu'un sais comment je peux la mettre "active" je lui en serait reconnaissant

36 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 nov. 2006 à 00:16
Re,
si c'est le SStab1 qui prend trop de place
il suffit de le cacher au moment nécessaire

Private Sub Form_Resize()
    If frmServer.WindowState = vbMinimized Then
       frmServer.Hide
       With nid
           .cbSize = Len(nid)
           .hWnd = Me.hWnd
           .uId = vbNull
           .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
           .uCallBackMessage = WM_MOUSEMOVE
           .hIcon = Me.Icon
           .szTip = Me.Caption & vbNullChar
       End With
       Shell_NotifyIcon NIM_ADD, nid
       SSTab1.Visible = False
    Else
       Shell_NotifyIcon NIM_DELETE, nid
    End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim lmsg As Long
    lmsg = x
    Select Case lmsg
        Case WM_LBUTTONDBLCLK
            frmServer.WindowState = vbNormal
            frmServer.Show
            SSTab1.Visible = True
    End Select
End Sub

Daniel
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 18:51
Relis toi.
Si tu te comprends, c'est bien, nous on ne comprends pas (ou alors c'est moi...)

Le problème dans ton texte c'est le mot, bah "problème", répété à maintes reprises, ce qui embrouille la lecture. De plus, je pense que tu dois employer des mots par d'autres !

Si tu pouvais être plus explicite, et n'hésite pas à fournir le code de la procédure qui ne fonctionne pas.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
6 nov. 2006 à 18:53
Salut,

Je pense que cela doit venir de l'obtention du focus ce qui te permettrait de récupérer le MouseMove, malheureusement tu risque de ne pas obtenir plus de choses si tu n'a pas accès au code interne

Chris...
Web : Firstruner
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 18:55
Voilà le code

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim lmsg As Long
   
    lmsg = x
    Select Case lmsg
        Case WM_LBUTTONDBLCLK
            frmServer.WindowState = vbNormal
            frmServer.Show
    End Select
End Sub

Et même en mettant le débogage je n'ai pas accès cette partie, donc comment faire pour lire cette partie ??
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 19:02
D'apres la constante utilisée : WM_LBUTTONDBLCLK
Tu cherches à déterminer le double click du bouton.

Si c'est ça, je ne pense pas que tu puisses par cette évènement là.

Button : ben c'est quel bouton : gauche, milieu ou droit
Shift : c'est Ctrl, Maj ou Alt
x et y : coordonnée du pointeur.

Est cela que tu cherches à faire ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 19:05
alors le bouton c'est le double-clic gauche

sinon ce que je cherches c'est comment entrer dans cettre procédure ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 19:11
Je ne comprends pas vraiment ce que tu appelles par "entrer dans cette procédure".
Tu ne peux pas modifier le code ?
Tu veux l"exécuter pas à pas ?
T'es bien avec Visual Basic 6.0 ?

Sinon, pour ton histoire de double click, regarde avec cet évènement :

Private Sub Form_DblClick()

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
6 nov. 2006 à 19:11
Je ne suis pas sûr que en VB6 tu puisse passer outre cette procédure comme en .Net, mais sait-on jamais on a parfois des surprises

Chris...
Web : Firstruner
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 19:14
ce qui est bizarre c'est que j'ai d'autre programme utilisant le même code et sa marche parfaitement.

Sinon ce programme a pour but de faire revenir en fenetre normal une fenetre qui avait disparut et qui était dans la barre des tâches à côté de l'horloge. Je c'est que l'écriture du code est bon, mais ce que je demande c'est comment rentrer dans ce code, comment l'utiliser ??

J'espère que vous me comprenez
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 19:18
Si par entrer si entends 'comment faire pour que la procédure s'exécute', c'est simple, il faut que le code soit bon :

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim lmsg As Long 'OK
   
    lmsg = x 'OUPS, tu enregistres une coordonnée
?!
    Select Case lmsg
       Case WM_LBUTTONDBLCLK 'Cette constante, est-elle déclarée qque part ?
' si c'est NON, la condition ne se fera jamais (et si tenté, que
par le plus
' grand des hasards, le pointeur de la
souris "x" correspond à la valeur
' de la
constante déclarée
            frmServer.WindowState = vbNormal
            frmServer.Show
    End Select
End Sub

' *** Bref, tout simplement
:

Private Sub Form_DblClick()
            frmServer.WindowState = vbNormal
            frmServer.Show
            ' et
peut-être    Unload Me    ?
End Sub


--Mortalino--

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 19:22
Non sa ne marche pas, la fenetre ne fait pas son apparition sur l'écran, l'icone est toujours dans la barre des tâches.

Et quand je disais entrer c'était bien le fait pour que la procédure s'exécute. (excuse moi pour la mauvaise compréhension que j'ai fait)

Concernant les variables, oui elles sont toutes bien déclarées
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 19:30
Je ne sais pas quoi te dire, j'ai mis 2 form dans un projet, depuis cet évènement (dblclick), je demande l'apparition d'une autre Form, et elle apparait bien.

Je ne met pas en doûte ton code, s'il a déjà fonctionné, peut-être, mais je ne comprends pas vraiment comment, qque chose m'échappe.
(confère commentaire que j'ai mis sur ton code) et en plus, lmsg est de type Long (sans décimales), alors qu'il doit récupérer la valeur de x, qui lui est de type Single(donc avec possibilité de décimales).

Voilà, c'est pour ça et les commentaires que là je sèche (+ essais)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
6 nov. 2006 à 19:37
D'accord si tu est sûr d'être en VB6 je ne comprend pas, mais si tu est en VB.Net alors il te manque le handle sur l'objet ;)

Chris...
Web : Firstruner
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 nov. 2006 à 19:46
De plus, lmsg & WM_LBUTTONDBLCLK, ça sent l'API.
Je dirai même une api pour le systray.

Regarde sur ta barre des tâches, tu devrais avoir l'icone de ta form (systray = zone icones systèmes), il te suffira peut-être de double cliquer dessus pour qu'elle s'affiche

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2006 à 20:05
essaye ça  (ou plus simplement le scalemode en pixels)

<strike>lmsg = x
</strike>lmsg  = ScaleX(x, Me.ScaleMode, vbPixels)

Daniel
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 20:11
oui c'est ça, je double clic et rien ne se passe. La form ne s'exécute pas
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 20:47
donc m'a question est : comment exécuter cette form ??
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2006 à 20:57
en corrigeant ton code:

Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim lmsg As Long
    If Me.ScaleMode = vbPixels Then
       lmsg = x
       Else
       lmsg = x \ Screen.TwipsPerPixelX
       End If
    Select Case lmsg
       Case WM_MOUSEMOVE:     
       Case WM_LBUTTONUP:    
       Case WM_LBUTTONUP:      
       Case WM_LBUTTONDBLCLK:
               frmServer.WindowState = vbNormal
               frmServer.Show  
       Case WM_RBUTTONDOWN:     
       Case WM_RBUTTONUP:        
       Case WM_RBUTTONDBLCLK:   
       End Select
End Sub

Daniel
0
figo566 Messages postés 59 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 1 mai 2011
6 nov. 2006 à 21:01
désolé mais rien ne se passe, j'ai toujours le même problème, si quelqu'un veut je peux lui filer mon programme et il testera chez lui
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2006 à 21:28
il doit avoir une erreur dans ton code
voila un exemple le plus simple possible et qui marche:

Option Explicit

Private Type IconeTray
    cbSize As Long
    hwnd As Long
    uID As Long
    uFlags As Long
    uCallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

Dim IconeT As IconeTray

Private Const AJOUT = &H0
Private Const MODIF = &H1
Private Const SUPPRIME = &H2
Private Const MOUSEMOVE = &H200
Private Const MESSAGE = &H1
Private Const Icone = &H2
Private Const TIP = &H4

Private Const WM_LBUTTONDBLCLK = &H203

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As IconeTray) As Boolean

Private Sub Form_Load()
    IconeT.cbSize = Len(IconeT)
    IconeT.hwnd = Me.hwnd
    IconeT.uID = 1&
    IconeT.uFlags = Icone Or TIP Or MESSAGE
    IconeT.uCallbackMessage = MOUSEMOVE
    IconeT.hIcon = Me.Icon
    IconeT.szTip = App.Title & Chr$(0)
    Shell_NotifyIcon AJOUT, IconeT
    App.TaskVisible = False
    Me.ScaleMode = vbPixels
    Me.Hide
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Select Case X
       Case WM_LBUTTONDBLCLK:
            frmServer.WindowState = vbNormal
            frmServer.Show
       End Select
End Sub

Daniel
0
Rejoignez-nous