Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 07-feb-2006, 09:36   #1 (permalink)
kafmany ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 2
Ayuda quitar menú emergente

Hola!!
Tengo un formulario con sólo un Textbox y un módulo.
Lo que quiero hacer es que cuando en el textbox pulse con el botón derecho y seleccione la opción -lectura de derecha a izquierda- ese menú emergente se cierre y que esa opción -lectura de derecha a izquierda- no sea ejecutada.

Yo a lo máximo que he llegado ha sido a interceptar cuando paso el cursor, por encima de la opción: -lectura de derecha a izquierda-. Pero me es imposible cerrar el menú y aparte interceptar cuando se pulse la opción y no como he hecho yo cuando paso el cursor..

Tal vez sea algo complicado, pero a ver si alguien me echa una mano..
Dejo el código para que probéis lo que digo:

En el formulario hay un Textbox. Este es el simple código que hay que poner en el formulario:
Código:
Private Sub Form_Load()
    Activa
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Desactiva
End Sub
Y este es el código que hay que poner en el módulo:

Código:
Option Explicit

Public Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long


Public Const GWL_WNDPROC = (-4)
Global PrevWndProc As Long

Public Sub Activa()
    PrevWndProc = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, AddressOf interceptar)
End Sub

Public Sub Desactiva()
  Dim temp As Long
    temp = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, PrevWndProc)
End Sub

Public Function interceptar(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = &H11F Then 'WM_MENUSELECT = &H11F
        If wParam = -2139062272 Then 'Es el parámetro wParam correspondiente.
            Debug.Print "Has pasado sobre -lectura de derecha a izquierda- " & Now & ""
            interceptar = True
        End If
    Else
        interceptar = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam)
    End If
End Function
Agradecería mucho al menos que alguien me enseñara a cerrar el menú emergente..
Gracias
kafmany está desconectado   Responder Citando
Antiguo 09-feb-2006, 11:24   #2 (permalink)
Colaborador
David el Grande llegará a ser famoso muy prontoDavid el Grande llegará a ser famoso muy prontoDavid el Grande llegará a ser famoso muy pronto
 
Avatar de David el Grande
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 5.350
Idea

Ahora, si no has de usar el Menú Emergente en su Totalidad, una buena opción sería impedir q' se accediera a ella...
__________________
"En la vida muchas veces tenemos que ser aprendices, y muchas veces maestros"
P.S.: Pregunta siempre en el foro correcto.
David el Grande está desconectado   Responder Citando
Antiguo 10-feb-2006, 15:25   #3 (permalink)
kafmany ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 2
Sí que se puede interceptar el menú al pulsar el botón derecho del ratón, que es como lo tengo actualmente en el programa, pero, son muy útiles las opciones copiar, pegar, cortar, seleccionar todo y eliminar y me gustaría que se pudieran utilizar.
He puesto esta cuestión en varios foros pero nadie ha sabido responderme y al final encontré un proyecto en una página en inglés donde explican cómo insertar una opción en un menú emergente. Así que lo que estoy haciendo es analizar detalle por detalle este proyecto y espero conseguir pronto que la opción -lectura de derecha a izquierda-, no pueda ser seleccionada.

PD. He intentado utilizar la propiedad Text1.RightToLeft = False, pero se puede modificar con pulsando el botón del ratón.
kafmany está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 17:40.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93