When you are talking about 'bits', i'll assume you mean 'WORD's'.
It's for backward compatibility/is a legacy from 16 bit architectures. Look up the macro definitions for HIWORD, LOWORD,HIBYTE and LOBYTE to see how they chop WPARAM's and LPARAM's (32 bit values) and WORD's(16 bit values) into smaller chunks.
From windef.h (aug2001psdk):
Code:
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;
or simpler from a previous version of windef.h:
Code:
typedef UINT WPARAM;
typedef LONG LPARAM;
ie WPARAM and LPARAM are defined as 32 bit values (or 64 bit on 64 bit machines when 'ULONG_PTR' is used).
edit: formatting