Pregunta

Nunca traté de hacer una GUI sin un diseñador de GUI y ahora estoy aprendiendo a desarrollar aplicaciones de Palm OS con el libro Programación de Palm OS: la guía de desarrolladores. Y en él tengo este código que es una declaración de algunos elementos de la GUI:

#define HelloWorldForm 1000
#define HelloWorldButtonButton 1003
#define HelloWorldMenuBar 1000

#define GoodnightMoonAlert 1101

#define FirstBeep 1010

#define SecondBeepmore 1000

Quiero saber algunas cosas:

  • ¿Necesito hacer esto en un tipo de pedido?
  • ¿Por qué necesito declarar estos números?
  • ¿En lo que me van a ayudar?
  • ¿Tienen algo conectado al tipo de artículo que son?
¿Fue útil?

Solución

Son identificaciones de recursos. No lo eres requerido Para definir tales macros, pero si no lo hace, tendrá que usar los valores enteros sin procesar cuando intente consultar los widgets de UI en el código. Por ejemplo, la forma típica en que obtendría un puntero a un control de la interfaz de usuario sería llamar:

FormType* formP = FrmGetActiveForm();
UInt16 index = FrmGetObjectIndex(formP, objectID);
ControlType* controlP = FrmGetObjectPtr(formP, index);

Necesitaría obtener punteros a los widgets de UI para hacer cosas como leer sus estados (como para casillas de verificación), cambiar las etiquetas de texto, mostrarlos o ocultarlos dinámicamente, etc.

No hay tipo de seguridad entre las ID de recursos y lo que hace con el puntero del que obtiene FrmGetObjectPtr; Es su responsabilidad realizar un seguimiento de qué identificación corresponde a qué tipo de control (la práctica común es usar nombres descriptivos).

Otros consejos

Probablemente sean "atajos legibles por humanos" (en forma de macros C) asociados con elementos GUI: dichos elementos probablemente solo se hacen referencia a través de enteros en el sistema host. No nos proporcionó muchos detalles para trabajar aquí.

La ventaja de tal técnica generalmente se asocia con un mantenimiento más fácil (entre otros).

Proporcionan un par de beneficios.

  1. Documentar el código. ¿Prefieres tener una llamada como LoadForm(1000); o LoadForm(HelloWorldForm); en su código fuente?
  2. En realidad, pueden ser utilizados por el archivo que define los recursos. Si alguna vez necesita renumerar los recursos (tal vez esté fusionando dos proyectos que usaron 1000 para diferentes formularios), solo necesitaría modificar el valor en un solo lugar.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top