[C con Clase] Opciones de MENUEX

Salvador Pozo salvador en conclase.net
Mie Nov 15 18:22:21 CET 2017


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 en conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net


Más información sobre la lista de distribución Cconclase