border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 07-07-2008, 18:03:24
Buena Participación en el Foro
 
Registrado: mar 2007
Posts: 74
Medardo Valoración +2
Predeterminado Simular MouseMove en un combo

Hola

En el siguiente enlace:
Interceptar los eventos de mouse en un combobox

encontré un artículo que habla sobre el tema que hago mención en el título de este mensaje. Lo he estado estudiando, pero no acabo de entender cuál es el momento en qué podemos determinar cuando el Mouse pasa por encima de un combo.
Agradecería que me ayuden en este tema.
__________________
Saludos
Desde La Habana
Cuba
Responder Con Cita
  #2 (permalink)  
Antiguo 07-07-2008, 20:28:16
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.184
acalanto ha deshabilitado la reputación
Predeterminado Re: Simular MouseMove en un combo

Bueno, es que los combo no disponen de eventos MouseOver, así que la única opción es construirlos mediante ´clasificación con las API.

Si utilizas el código que aparece en el enlace (no lo he probado) seguramente te funcionará aunque la subclasificación desde VB6 suele ser algo retorcida y no recomendable. Fíjate que incluso en el código que te propone el enlace, el´parámetro para detectar el paso del cursor (WM_MOUSEMOVE), lo tienen marcado como comentario. !!Algún problema han debido tener!!


Mi consejo:

Si por razones plenamente justificadas has de detectar cuando el Mouse pasa por encima del Combo...utiliza el método descrito...(Eliminando el parámetro comentado), de lo contrario no lo toques.


PD: Como se hace la subclasificación para añadir eventos inexistentes..fíjate en este código.


Código:
 
' Inicia el hook
lpPrevWndProc = SetWindowLong(HWND_EDIT, -4, AddressOf WinProc)
Le indicamos al sistema de mensajes de windows que detecte cuando ocurre 'algo' en el objeto HWND (En nuestro caso el Combo), y que cuando ocurra ejecute el código existente en el puntero establecido por Adressof WinProc, es decir, obligamos al sistema operativo a ejecutar una función de nuestro código (retrollamada o gancho).
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion

Última edición por acalanto fecha: 07-07-2008 a las 20:37:41.
Responder Con Cita
  #3 (permalink)  
Antiguo 07-07-2008, 21:20:32
Buena Participación en el Foro
 
Registrado: mar 2007
Posts: 74
Medardo Valoración +2
Predeterminado Re: Simular MouseMove en un combo

Gracias Acalanto por la respuesta y, sobre todo, por la explicación de esa parte del código.
He estado haciendo interrupciones del código para verlo paso a paso y no da ningún resultado, ni con el código comentado abierto, por eso este hilo que inicié.

No obstante, he encontrado una solución en otra página:
Programación en castellano. Foros de debate. Visual Basic programacion gratis

Haciendo algunos cambios de acuerdo a mi necesidad, el código queda así:

En un módulo:

Public Type POINTAPI
X As Long
Y As Long
End Type

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long

Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Function Handle() As Long
Dim coord As POINTAPI
Dim punto&
punto = GetCursorPos(coord)
Handle = WindowFromPoint(coord.X, coord.Y)
'si Handle es igual al Handle del combo
If Handle = NombreForm.NombreCombo.hwnd Then
'aquí el código para cuando el Mouse pase por encima del combo
End IfEnd Function

En el formulario donde se encuentra el combo, colocar un Timer

En el Timer poner:

Private Sub Timer1_Timer()
Handle
End Sub

Esto es todo, y gracias una vez más.
__________________
Saludos
Desde La Habana
Cuba
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT. Ahora son las 19:40:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right