Funcionamiento de los menus

Funcionamiento de los menus

Postby juanjogascem » Wed Nov 08, 2006 12:14 pm

No logro entender el funcionamiento de los menus.
Miro el ejemplo menus.prg y, vale, lo compilo y funciona, pero intento reproducir un menú más amplio como el de la aplicacion SV y no me funciona.
¿ Podria alguien indicarme como es su funcionamiento? o donde existe documentacion al respecto?

Un saludo
Juan José
juanjogascem
 
Posts: 102
Joined: Wed May 31, 2006 8:49 am
Location: España

Postby helvant » Tue Nov 21, 2006 11:57 am

estoy en las mismas, creo el menu pero no me sale en pantalla, solo sale la pantalla inicial. He escribo este reply para posicionarlo arriba por si alguien nos ayuda.

Salu2

Javier
Saludos desde el sur del sur
User avatar
helvant
 
Posts: 41
Joined: Mon Jun 26, 2006 10:27 am
Location: Sanlucar de Barrameda-Cádiz-ESPAÑA

Postby Antonio Linares » Tue Nov 21, 2006 12:23 pm

Juan José, Javier,

Los menus en Pocket PC no están practicamente documentados por Microsoft, y son un poco liosos. Teneis un ejemplo en tutor03.rc y tutor03.prg:

1. No se pueden crear desde código. Siempre hay que definirlos en el fichero de recursos.

2. En el fichero de recursos se usan TRES partes para crearlos:

1a parte:

#ifdef _CE
102 RCDATA
BEGIN
102, 2,
I_IMAGENONE, 202, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, 202, 0, 0,
I_IMAGENONE, 203, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, 203, 0, 1,
END
#endif

Usamos ese #ifdef porque los editores de recursos habituales no saben interpretar esos valores. RCDATA significa "datos adicionales". Hay que darle el mismo número que tenga el menu (102), y se repite nuevamente después de BEGIN.

A continuación viene el valor 2, que indica cuantos menuitems tiene. A más menuitems, hay que aumentar ese valor.

Cada menuitem termina en 0, salvo el último que termina en 1.

El texto de cada menuitem no se especifica ahí, sino que se indica por un número. En este caso 202 y 203. Esos valores se buscan en una tabla de cadenas que hay que declarar a continuación:

2a parte:

STRINGTABLE DISCARDABLE
BEGIN
202 "First"
203 "Second"
END

Por último viene la definición del menú:

3a parte:

102 MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "it works", 100
END

POPUP ""
BEGIN
MENUITEM "Test", 110
END
END

Fijaros en que usa el valor 102 que es el mismo que usa su RCDATA. Cada menuitem tiene un número (100, 110) que es él identificador del menuitem y que usaremos desde el PRG:

DEFINE MENU oMenu RESOURCE 102 // Usa el menu 102

REDEFINE MENUITEM ID 100 OF oMenu ACTION MsgInfo( "MenuItem action" ) WHEN .f. // Define la acción para el menuitem código 100

REDEFINE MENUITEM ID 110 OF oMenu ACTION MsgAlert( "FWCE power!" ) // Define la acción para el menuitem código 110

Es un tanto lioso, pero es así como lo ha diseñado Microsoft para Windows Mobile y no tenemos otra forma de hacerlo.
Last edited by Antonio Linares on Wed Nov 22, 2006 7:53 am, edited 1 time in total.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Creacon de Menus

Postby juanjogascem » Wed Nov 22, 2006 7:37 am

Gracias Antonio, ya habia empezado a utilizr botones.

Un saludo
Juan José
juanjogascem
 
Posts: 102
Joined: Wed May 31, 2006 8:49 am
Location: España

Postby helvant » Wed Nov 22, 2006 9:59 am

Muchas gracias Antonio, estoy en ello

Salu2
Javier
Saludos desde el sur del sur
User avatar
helvant
 
Posts: 41
Joined: Mon Jun 26, 2006 10:27 am
Location: Sanlucar de Barrameda-Cádiz-ESPAÑA

Postby Antonio Linares » Sun Dec 17, 2006 12:51 pm

> Cada menuitem termina en 0, salvo el último que termina en 1.

Esto es erróneo. Cada menuitem, en el RCDATA del fichero RC,
ha de terminar en un número consecutivo, empezando por cero.

Aqui teneis un ejemplo completo:
http://fivetechsoft.com/forums/viewtopic.php?t=5342
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 42 guests