Есть ли способ передать - объявляют HINSTANCE
введите от WinAPI без включения полного (и большой) windows.h
заголовок?
Например, если у меня есть класс RenderWindow
который владеет HINSTANCE mInstance
, я должен буду включать windows.h
в RenderWindow.h
. Так все, чему нужно RenderWindow
также должен включать windows.h
.
Я попробовал включая windef.h
но этому, кажется, нужны некоторые вещи от windows.h
.:-( Если я не могу передать, объявляют это, есть ли, по крайней мере, портативный способ использовать что-то как long mInstance
в RenderWindow
вместо HINSTANCE
?
HINSTANCE объявлен в WinDef.h как typedef HINSTANCE __ * HINSTANCE;
Вы можете написать в своих заголовках:
#ifndef _WINDEF_
class HINSTANCE__; // Forward or never
typedef HINSTANCE__* HINSTANCE;
#endif
Вы получите ошибки компиляции, ссылаясь на HINSTANCE, если WinDef.h не включен.
Вы можете объявить его недействительным * и отбросить ошибки. Это близка к бесконечной битве, но рано или поздно вы запутаетесь. Используйте предварительно скомпилированные заголовки, чтобы не заботиться о размере windows.h
stdafx.h:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
Например, если у меня есть класс
RenderWindow
, которому принадлежитHINSTANCE mInstance
, мне нужно будет включитьwindows.h
вRenderWindow.h
. Так что все, что требуетRenderWindow
, также должно включатьwindows.h
.
Вы смотрели на идиому Pimpl ? Это позволяет скрывать частных участников. Побочным эффектом является то, что вам не нужно включать их заголовки в заголовок вашего класса.