Problème avec Form_MouseMove [Résolu]

Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
- - Dernière réponse : figo566
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
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
Afficher la suite 

Votre réponse

20/36 réponses

Meilleure réponse
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
3
Merci
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

Merci Gobillot 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Gobillot
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
0
Merci
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
Commenter la réponse de cboulas
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
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 ??
Commenter la réponse de figo566
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
alors le bouton c'est le double-clic gauche

sinon ce que je cherches c'est comment entrer dans cettre procédure ?
Commenter la réponse de figo566
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
0
Merci
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
Commenter la réponse de cboulas
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
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
Commenter la réponse de figo566
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
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
Commenter la réponse de figo566
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
0
Merci
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
Commenter la réponse de cboulas
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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"
<!--
Commenter la réponse de mortalino
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
essaye ça  (ou plus simplement le scalemode en pixels)

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

Daniel
Commenter la réponse de Gobillot
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
oui c'est ça, je double clic et rien ne se passe. La form ne s'exécute pas
Commenter la réponse de figo566
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
donc m'a question est : comment exécuter cette form ??
Commenter la réponse de figo566
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
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
Commenter la réponse de Gobillot
Messages postés
59
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
1 mai 2011
0
Merci
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
Commenter la réponse de figo566
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
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
Commenter la réponse de Gobillot

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.