Hilo
Opciones de MENUEX (marcelinux) 2017-11-15 16:25:04
Hola a todos.
En el capítulo 37, en que se extiende la capacidad del menú, se hace referencia a MFS_GRAYED para el MENUITEM "&Gris".
Se comenta que debe incluirse winuser.h sin embargo, al descargar el ejemplo, el fichero de recursos incluye windows.h.
Para compilar he tenido que sustituir windows.h por winuser.h y SEPARATOR por ""
Además, me sucede que, tal como está el archivo de recursos, en ejecución no me muestra el menú.
He tenido que cambiar
MENUITEM "&Gris", 501, MFT_STRING | MFS_GRAYED
por
MENUITEM "&Gris", 501, MFT_STRING , MFS_GRAYED
Me di cuenta porque la opción "Prueba &3" está con la coma en lugar del pipe.
Pero no entiendo el motivo ya que la sintaxis es:
[{[MENUITEM itemText [, [id] [, [type [| state]]]]
por tanto, el state no es un parámetro sino parte de él.
Lo estoy probando en un
Windows Server 2003 (5.2)
Compilador Microsoft Visual C++ 2008
con el IDE Visual Studio 2008
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Re: Opciones de MENUEX (Steven Davidson) 2017-11-15 16:57:27
Hola Marcelino,
Efectivamente, debería ser una coma y no una raya, |. La sintaxis oficial
es:
menuID MENUEX{
[ { [MENUITEM itemText [,[id][, [type][, state]]]] |
POPUP itemText [,[id][, [type][, [state][, helpID]]]] { popupBody } } .
. .]}
Es una coma tanto para el MENUITEM como para la parte emergente: POPUP.
Hasta pronto,
Steven
2017-11-15 11:25 GMT-05:00 <marcelinator@gmail.com>:
> Hola a todos.
> En el capítulo 37, en que se extiende la capacidad del menú, se hace
> referencia a MFS_GRAYED para el MENUITEM "&Gris".
> Se comenta que debe incluirse winuser.h sin embargo, al descargar el
> ejemplo, el fichero de recursos incluye windows.h.
> Para compilar he tenido que sustituir windows.h por winuser.h y SEPARATOR
> por ""
> Además, me sucede que, tal como está el archivo de recursos, en ejecución
> no me muestra el menú.
> He tenido que cambiar
> MENUITEM "&Gris", 501, MFT_STRING | MFS_GRAYED
> por
> MENUITEM "&Gris", 501, MFT_STRING , MFS_GRAYED
>
> Me di cuenta porque la opción "Prueba &3" está con la coma en lugar del
> pipe.
> Pero no entiendo el motivo ya que la sintaxis es:
> [{[MENUITEM itemText [, [id] [, [type [| state]]]]
> por tanto, el state no es un parámetro sino parte de él.
>
> Lo estoy probando en un
> Windows Server 2003 (5.2)
> Compilador Microsoft Visual C++ 2008
> con el IDE Visual Studio 2008
>
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Re: Opciones de MENUEX (Salvador Pozo) 2017-11-15 17:22:21
El pasado 2017-11-15 16:25:04, marcelinux escribió:
m> Hola a todos.
Hola:
Para completar la respuesta.
m> En el capítulo 37, en que se extiende la capacidad del menú, se hace referencia a MFS_GRAYED para el MENUITEM "&Gris".
m> Se comenta que debe incluirse winuser.h sin embargo, al descargar el ejemplo, el fichero de recursos incluye windows.h.
El fichero windows.h incluye a su vez el fichero winuser.h, por lo que, en este caso, es indiferente usar uno u otro.
m> Para compilar he tenido que sustituir windows.h por winuser.h y SEPARATOR por ""
Lo de usar "" en lugar de SEPARATOR lo comento en la página 37b:
3. Los separadores dentro de menús POPUP no se consiguen con la bandera de tipo MFS_SEPARATOR, sino usando una cadena nula ("").
m> Además, me sucede que, tal como está el archivo de recursos, en ejecución no me muestra el menú.
m> He tenido que cambiar
m> MENUITEM "&Gris", 501, MFT_STRING | MFS_GRAYED
m> por
m> MENUITEM "&Gris", 501, MFT_STRING , MFS_GRAYED
m> Me di cuenta porque la opción "Prueba &3" está con la coma en lugar del pipe.
m> Pero no entiendo el motivo ya que la sintaxis es:
m> [{[MENUITEM itemText [, [id] [, [type [| state]]]]
m> por tanto, el state no es un parámetro sino parte de él.
Efectivamente, es un error. El prefijo MFT indica que es un valor de tipo (TYPE), y el prefijo MFS de estado (STATE), por lo tanto deberían separarse por comas. Lo corregiré.
El caso es que con el compilador de recursos que se incluye con el IDE que uso (Code::Blocks), funciona de las dos formas, pero la correcta es la que tu dices. Lo corregiré.
Por otra parte, las constantes MFS_GRAYED y MFS_DISABLED están definidas en winuser.h con el mismo valor, 3, por lo tanto son equivalentes y no es posible distinguir un estado de otro en las versiones actuales del API.
Gracias por el mensaje, hasta pronto.
--
Salvador Pozo (Administrador)
mailto:salvador@conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Re: Opciones de MENUEX (marcelinux) 2017-11-16 10:19:43
Muchas gracias a ambos por la aclaración.
_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ