2 Notación Húngara
La notación húngara es un sistema usado normalmente para crear los nombres de variables, tipos y estructuras cuando se programa en Windows. Es el sistema usado en la programación del sistema operativo, y también por la mayoría de los programadores. A veces también usaremos este sistema en algunos ejemplos de este curso, pero sobre todo, nos ayudará a interpretar el tipo básico al que pertenece cada estructura, miembro, o tipo definido.
Consiste en prefijos en minúsculas que se añaden a los nombres de las variables, y que indican su tipo; en el caso de tipos definidos, las letras del prefijo estarán en mayúscula. El resto del nombre indica, lo más claramente posible, la función que realiza la variable o tipo.
Prefijo | Significado |
b | Booleano |
c | Carácter (un byte) |
dw | Entero largo de 32 bits sin signo (DOBLE WORD) |
f | Flags empaquetados en un entero de 16 bits |
h | Manipulador de 16 bits (HANDLE) |
l | Entero largo de 32 bits |
lp | Puntero a entero largo de 32 bits |
lpfn | Puntero largo a una función que devuelve un entero |
lpsz | Puntero largo a una cadena terminada con cero |
n | Entero de 16 bits |
p | Puntero a entero de 16 bits |
pt | Coordenadas (x, y) empaquetadas en un entero de 32 bits |
rgb | Valor de color RGB empaquetado en un entero de 32 bits |
sz | Cadena terminada en cero |
u | Sin signo (unsigned) |
w | Entero corto de 16 bits sin signo (WORD) |
Ejemplos
nContador: la variable es un entero que se usará como contador.
szNombre: una cadena terminada con cero que almacena un nombre.
bRespuesta: una variable booleana que almacena una respuesta.
Ejemplos de tipos definidos por el API de Windows:
UINT: entero sin signo. Windows redefine los enteros para asegurar que el tamaño en bits es siempre el mismo para todas las variables del API.
LRESULT: entero largo usado como valor de retorno.
WPARAM: entero corto de 16 bits usado como parámetro.
LPARAM: entero largo de 32 bits usado como parámetro.
LPSTR: puntero largo a una cadena de caracteres. En el API de 32 bits no existen distinciones entre punteros largos y cortos, pero la nomenclatura se conserva por compatibilidad.
LPCREATESTRUCT: puntero a una estructura CREATESTRUCT.