Foros del Web » Programación para mayores de 30 ;) » Programación General »

por favor, a ver si podeis ayudarme con esto

Estas en el tema de por favor, a ver si podeis ayudarme con esto en el foro de Programación General en Foros del Web. Bueno resulta que tengo un codigo (si con apis incluidas y me gustaria que me ayudarais a encontrar donde dentro de un código se accede ...

  #1 (permalink)  
Antiguo 01/06/2004, 02:07
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
por favor, a ver si podeis ayudarme con esto

Bueno resulta que tengo un codigo (si con apis incluidas y me gustaria que me ayudarais a encontrar donde dentro de un código se accede
a las opciones del menu que se han cargado?, es decir, el codigo que me dice que si pulso por ejemplo guardar me sale la ventana de guardar y guardo el archivo. Por ello quien este interesado en ayudarme que me envie un mensaje para que le envie el codigo y una descripcion del mismo(vamos de la parte que mas o menos entiendo)

Muchas gracias por todo y espero vuestra respuesta.
  #2 (permalink)  
Antiguo 01/06/2004, 02:10
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Ese codigo no es tuyo?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 01/06/2004, 02:19
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola Eternal Idol gracias por contestar, es un codigo que me puso un usuario del grupo de noticias microsoft para que me sirviera de ayuda, yo estoy utilizando mi código pero intento aplicar la parte de activar desactivar de ese codigo(cuando sepa cual es..), lo que ocurre es que ese ejemplo esta hecho con un treeview y yo tengo que usar una listbox.

Gracias y espero tu respuesta.
  #4 (permalink)  
Antiguo 01/06/2004, 02:22
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
The EnableMenuItem function enables, disables, or grays the specified menu item.

BOOL EnableMenuItem(
HMENU hMenu, // handle to menu
UINT uIDEnableItem, // menu item to update
UINT uEnable // options
);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 01/06/2004, 02:26
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
gracias Eternal Idol

Gracias por contestar Eterna Idol(podias explicarte menos brevemente..)
Sabes como se utiliza esta API?(donde la pondrías?), la verdad es que ya la habia visto antes pero no he conseguido nada con ella, tu sabrías como utilizarla?
  #6 (permalink)  
Antiguo 01/06/2004, 02:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Donde la pondria? En donde quisiera habilitar/deshabilitar un menu ...

Como usarla?

Para deshabilitar:
EnabledMenuItem(HandleDelMenu,ItemADeshabilitar,MF _DISABLED);

Para habilitar:
EnabledMenuItem(HandleDelMenu,ItemADeshabilitar,MF _ENABLED);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 01/06/2004, 02:43
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
gracias compañero Eternal Idol

Gracias otra vez por todo Eterna Idol, entonces si yo por ejemplo tengo en la listbox esto:

ARCHIVO
EDICION
VER
FAVORITOS
HERRAMIENTAS


Imaginate que selecciono la opcion ver al recorrer la listbox, que tendría que poner en itemAdeshabilitar(no estoy seguro de que con esto se acceda a la funcionalidad de la opcion del menu, porque no se como funciona internamente..) Gracias de nuevo y perdona las molestias.





'AQUI QUE PONGO'

EnabledMenuItem(HandleDelMenu,ItemADeshabilitar,MF _DISABLED);
  #8 (permalink)  
Antiguo 01/06/2004, 02:53
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Si tenes el handle del menu podes hacerlo por posicion asi:


Siendo el item a deshabilitar EDICION:

EnabledMenuItem(HandleDelMenu,1,MF _DISABLED or MF_BYPOSITION);

Siendo el itema deshabilitar Archivo:

EnabledMenuItem(HandleDelMenu,0,MF _DISABLED or MF_BYPOSITION);
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #9 (permalink)  
Antiguo 01/06/2004, 03:08
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola Eterna Idol!!
Ya pero claro el menu de una aplicacion no tiene siempre el mismo numero de opciones y ademas el indice no será siempre el mismo, dependera de la opcion que yo quiera activar o desactivar, gracias por todo y espero tu respuesta.
  #10 (permalink)  
Antiguo 01/06/2004, 03:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
En el listbox pones solo los submenus principales (Archivo,Edicion,etc) o tambien los items de cada uno de estos?

Si solo pones los principales es muy simple, obtenes la posicion del item seleccionado en el listbox y usas la funcion.

Para los items de cada uno de los menues podrias hacer otro listbox que mostrara los items del menu seleccionado en el listbox que ya tenes y usar el handle de ese submenu (GetSubMenu() usando la misma posicion del item seleccionado en el primer listbox) mas la posicion del segundo listbox para acceder a cada item de los submenues.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 01/06/2004, 03:40
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola Eternal Idol, y como hago para obtener la posicion?, ahora mismo solo pongo las opciones principales pero si quisiera poner todas que diferencias encontrarias?
Gracias y espero tu respuesta.
  #12 (permalink)  
Antiguo 01/06/2004, 03:44
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Siendo la lista List1:

For X = 0 To List1.ListCount - 1
If List1.Selected(X) = True Then
'ESTE ES EL ITEM SELECCIONADO
EnableMenuItem(HandleDelMenu,X,MF_DISABLED or MF_BYPOSITION)
End If
Next

Si queres poner todas en un solo listbox seria muy complicado, si pones los items de los submenues en otro listbox seria tan simple como te explique antes.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #13 (permalink)  
Antiguo 01/06/2004, 03:57
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola otra vez, estoy teniendo problemas con la declaracion de la API se pone en rojo y no consigo que la acepte. gracias
  #14 (permalink)  
Antiguo 01/06/2004, 04:05
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Puede ser que la declaracion sea esta?

Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

No estoy seguro, tu que opinas?, es que he encontrado las dos declaraciones en Google.
  #15 (permalink)  
Antiguo 01/06/2004, 04:05
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

Encontre esa en internet, no entiendo porque tenes problemas porque es muy simple, son 3 DWORDS nada mas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #16 (permalink)  
Antiguo 01/06/2004, 04:14
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Ya he encontrado el problema de la declaracion, resulta que ahora pongo el codigo que me dijiste y en la linea: EnableMenuItem(hmenu,x,MF_DISABLED or MF_BYPOSITION) me sale un error : "ERROR DE SINTAXIS" y la verdad no se porque, pensaba que podia ser porque hmenu estaba en el modulo pero dentro de una funcion y podia no tomarlo como global, por eso lo puse como public pero aun asi me sale ese error. Muchas gracias y espero tu respuesta.
  #17 (permalink)  
Antiguo 01/06/2004, 04:20
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Deberias definir las constantes
private Const MF_BYPOSITION = &H400&
Private Const MF_DISABLED = &H2&

y deberias saber que ese codigo no funciona por los parentesis, o le das su valor a una variable ejemplo:

Result = EnableMenuItem(hmenu,x,MF_DISABLED or MF_BYPOSITION)

o le quitas los parentesis.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #18 (permalink)  
Antiguo 01/06/2004, 04:34
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
pues lo he intentado con y sin parentesis y nada:Dim y As Long

For y = 0 To lst1.ListCount - 1
If lst1.Selected(y) = True Then
'ESTE ES EL ITEM SELECCIONADO
EnableMenuItem hmenu, x, MF_ENABLED Or MF_BYPOSITION
End If
Next

A ver si puedes ayudarme porque no se que es lo que esta mal escrito.
Muchas gracias(y perdona las molestias)
  #19 (permalink)  
Antiguo 01/06/2004, 04:40
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Que es x en ese codigo? Nada, si vas a usar la variable y para la iteracion tambien usala en la llamada:

EnableMenuItem hmenu, y, MF_ENABLED Or MF_BYPOSITION
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #20 (permalink)  
Antiguo 01/06/2004, 04:47
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Perdona menudo, fallo que no había puesto la "y" tambien en esa linea.
Pues bien he cambiado eso y ahora me señala este error cuando le doy al boton activar :(tengo por ejemplo favoritos marcado en la listbox)

ERROR 49: La convencion de llamadas a DLL es incorrecta

Luego le doy a Depurar(en lugar de a Terminar) y me marca en amarillo(como no) esta
linea:

EnableMenuItem hmenu, y, MF_ENABLED Or MF_BYPOSITION

Espero que me puedas ayudar y siento mucho las molestias porque se me van encadenando errores, muchas gracias y espero tu respuesta.
  #21 (permalink)  
Antiguo 01/06/2004, 04:55
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long

Private Sub Command1_Click()
For y = 0 To List1.ListCount - 1
If List1.Selected(y) = True Then
'ESTE ES EL ITEM SELECCIONADO
EnableMenuItem hmenu, y, MF_ENABLED Or MF_BYPOSITION
End If
Next
End Sub

Asi me funciona, probalo por favor.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #22 (permalink)  
Antiguo 01/06/2004, 05:06
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola, ya no me sale el error 49, pero cuando le doy al boton activar no se me activar la opcion correspondiente. Cuando pulso activar no hace nada. Tu has conseguido que active la opcion?
Gracias y espero tu respuesta.
  #23 (permalink)  
Antiguo 01/06/2004, 05:12
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Activar? Activar significa que se puede ir con el mouse o con el teclado y el submenu se va a desplegar y desactivar lo contrario.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #24 (permalink)  
Antiguo 01/06/2004, 05:17
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola Eternal Idol, gracias por contestar.
Ya sé lo que es activar y desactivar, la pregunta es que si tu has conseguido hacerlo porque yo cuando pulso activar no hace nada.
gracias y espero tu respuesta.
  #25 (permalink)  
Antiguo 01/06/2004, 05:22
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Acaso esta desactivado el menu??? Proba a desactivarlo y despues a activarlo...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #26 (permalink)  
Antiguo 01/06/2004, 05:36
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Yo lo que hago es una shell para llamar por ejemplo al windows media.
entonces ahora al ejecutar tengo el programa abierto y le doy al boton activar que tiene este codigo:Private Sub cmdactivar_Click()
'Dim result As Variant

'movimiento

AppActivate (retval) 'esto es para que la ventana de la aplicacion este activada

Lo he probado de nuevo y no ocurre nada, y si el menu esta activado pero no ocurre nada con las opciones. Muchas gracias y espero tu respuesta.
  #27 (permalink)  
Antiguo 01/06/2004, 05:38
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
vale perdona otra vez este es el código del boton:Private Sub cmdactivar_Click()
'Dim result As Variant



AppActivate (retval) 'para que la ventana de la aplicacion este activada'



Dim y As Long

For y = 0 To lst1.ListCount - 1
If lst1.Selected(y) = True Then
'ESTE ES EL ITEM SELECCIONADO
EnableMenuItem hMenu, y, MF_ENABLED Or MF_BYPOSITION
End If
Next

Ahora si que esta bien puesto. Gracias.
  #28 (permalink)  
Antiguo 01/06/2004, 05:42
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Proba con este codigo, deshabilita la opcion?

Habilitar y deshabilitar es que son accesibles, si ya esta habilitado y le haces un MF_ENABLED no va a hacer nada...

Dim y As Long

For y = 0 To lst1.ListCount - 1
If lst1.Selected(y) = True Then
'ESTE ES EL ITEM SELECCIONADO
EnableMenuItem hMenu, y, MF_DISABLED Or MF_BYPOSITION
End If
Next
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #29 (permalink)  
Antiguo 01/06/2004, 05:51
 
Fecha de Ingreso: mayo-2004
Ubicación: guipuzcoa
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Hola Eternal Idol, yo no consigo nada por mas que lo intento no hace nada he puesto el APPACTIVATE con comentario pero nada, y he probado con habilitar y deshabilitar, no tengo ni idea de como has hecho para conseguirlo, has probado con el programa que te envie?(aquella vez), no se, la verdad esto me esta desmoralizando un poco.
en cuanto a esta parte que has puesto
"Habilitar y deshabilitar es que son accesibles, si ya esta habilitado y le haces un MF_ENABLED no va a hacer nada..."
que quieres decir con eso? yo tendre que habilitar y deshabilitar con los botones pero claro antes he tenido que hacer la shell que me ejecute la aplicacion(por favor explicame mas detalladamente esa parte)



Gracias por responder y espero tu respuesta.
  #30 (permalink)  
Antiguo 01/06/2004, 05:55
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
"Activar? Activar significa que se puede ir con el mouse o con el teclado y el submenu se va a desplegar y desactivar lo contrario."

Activar no significa desplegar el menu, ni seleccionar un item.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:00.