abe*_*thy 7 c++ winapi hinstance
有没有办法HINSTANCE从WinAPI 转发声明类型而不包括完整(和大)windows.h标题?
举例来说,如果我有一个类RenderWindow拥有的HINSTANCE mInstance,我将不得不包括windows.h在RenderWindow.h.因此,所需的一切RenderWindow也必须包括在内windows.h.
我试过包括,windef.h但这似乎需要一些东西windows.h.:-(如果我不能转发声明它,是否至少有一种可移植的方式来使用像long mInstancein RenderWindow而不是HINSTANCE?
HINSTANCE在WinDef.h中声明为typedef HINSTANCE __*HINSTANCE;
您可以在标题中写下:
#ifndef _WINDEF_
class HINSTANCE__; // Forward or never
typedef HINSTANCE__* HINSTANCE;
#endif
Run Code Online (Sandbox Code Playgroud)
当不包含WinDef.h时,您将获得引用HINSTANCE的编译错误.
您可以将其声明为 void* 并消除错误。但这几乎是一场永无休止的战斗,迟早你会被绊倒。使用预编译头文件,这样你就不用关心 windows.h 的大小
stdafx.h:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
Run Code Online (Sandbox Code Playgroud)