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.