Reimpreso: https://www.cnblogs.com/furzoom/p/hinstance.html
Autor: Ma Yan ( Furzoom ) ( http://www.cnblogs.com/furzoom/ )
Derechos de autor: jardín pertenece al autor de este blog y común a todos. Al volver a imprimir, indique el enlace detallado de este artículo en un lugar obvio. No elimine esta declaración sin el consentimiento del autor. Gracias por su contribución a la protección de los derechos de propiedad intelectual.
在看《 WINDOWS程序设计 》过程中,对于HINSTANCE的理解很重要,网上多数说其是一个整型变量,其实是不对的。http://furzoom.com/
HINSTANCE定义
通过查找HINSTANCE的定义有WINDEF.H中为:
001
|
DECLARE_HANDLE(
HINSTANCE
);
|
Supongo que debería ser una definición de macro, continúe mirando la definición de DECLARE_HANDLE (), también en WINDEF.H, de la siguiente manera:
001
002
003
004
005
006
007
008
|
#ifdef STRICT
typedef
void
*
HANDLE
;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef
PVOID
HANDLE
;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef
HANDLE
*
PHANDLE
;
|
Se puede ver que DECLARE_HANDLE () se define en una condición predefinida, por lo tanto, si la condición es verdadera, continúe buscando la definición de ESTRICTO, al comienzo de WINDEF.H son los siguientes:
001
002
003
004
005
006
007
008
|
#ifndef _WINDEF_
#define _WINDEF_
#ifndef NO_STRICT
#ifndef STRICT
#define STRICT 1
#endif
#endif /* NO_STRICT */
|
De esta manera, sabemos que STRICT se define por defecto.
Luego mire la definición de macro DECLARE_HANDLE (),
001
|
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
|
## es una conexión de caracteres, entonces
001
|
DECLARE_HANDLE(
HINSTANCE
)
|
Es equivalente a
001
|
struct
HINSTANCE__ {
int
unused; };
typedef
struct
HINSTANCE__ *
HINSTANCE
;
|
HINSTANCE es una variable de puntero que apunta a la estructura HINSTANCE, y solo hay una variable int en la estructura. En WINDOWS, los identificadores se definen principalmente de esta manera.
De: tipo de datos HINSTANCE - Programación de WINDOWS - Maple Bamboo Dream
在看《 WINDOWS程序设计 》过程中,对于HINSTANCE的理解很重要,网上多数说其是一个整型变量,其实是不对的。http://furzoom.com/
HINSTANCE定义
通过查找HINSTANCE的定义有WINDEF.H中为:
001
|
DECLARE_HANDLE(
HINSTANCE
);
|
Supongo que debería ser una definición de macro, continúe mirando la definición de DECLARE_HANDLE (), también en WINDEF.H, de la siguiente manera:
001
002
003
004
005
006
007
008
|
#ifdef STRICT
typedef
void
*
HANDLE
;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef
PVOID
HANDLE
;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef
HANDLE
*
PHANDLE
;
|
Se puede ver que DECLARE_HANDLE () se define en una condición predefinida, por lo tanto, si la condición es verdadera, continúe buscando la definición de ESTRICTO, al comienzo de WINDEF.H son los siguientes:
001
002
003
004
005
006
007
008
|
#ifndef _WINDEF_
#define _WINDEF_
#ifndef NO_STRICT
#ifndef STRICT
#define STRICT 1
#endif
#endif /* NO_STRICT */
|
De esta manera, sabemos que STRICT se define por defecto.
Luego mire la definición de macro DECLARE_HANDLE (),
001
|
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
|
## es una conexión de caracteres, entonces
001
|
DECLARE_HANDLE(
HINSTANCE
)
|
Es equivalente a
001
|
struct
HINSTANCE__ {
int
unused; };
typedef
struct
HINSTANCE__ *
HINSTANCE
;
|
HINSTANCE es una variable de puntero que apunta a la estructura HINSTANCE, y solo hay una variable int en la estructura. En WINDOWS, los identificadores se definen principalmente de esta manera.
De: tipo de datos HINSTANCE - Programación de WINDOWS - Maple Bamboo Dream