Как мне переслать объявить РУЧКУ?(Win32) - PullRequest
9 голосов
/ 08 ноября 2010

Как переслать объявление HANDLE? Я не хочу включать все windows.h в этот конкретный заголовок.

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

Заголовок, который на самом деле 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.

2 голосов
/ 08 ноября 2010

Ну, похоже, я сам ответил на это. Я просто #include ed <windef.h> вместо <windows.h> на данный момент. Я все еще хотел бы иметь возможность перенаправить объявление просто HANDLE, если у кого-то есть способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...