Заголовок, который на самом деле typedefs HANDLE
, равен winnt.h
.К сожалению, это 15 тыс. Строк, поэтому решение проблемы с помощью Slimline windef.h
немного вводит в заблуждение.
Вот соответствующая часть в моей системе (очевидно, что детали могут меняться от редакции к редакции, но не изменятся на уровне реализации, поскольку это нарушит существующие двоичные файлы):
//
// Handle to an Object
//
#ifdef STRICT
typedef void *HANDLE;
#if 0 && (_MSC_VER > 1000)
#define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name
#else
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
#endif
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;
PS Должен любить это #if 0
в этом заголовочном файле Microsoft.