HINSTANCE数据类型

Windows 2013年11月20日 ,

hinstance-type-1在看《WINDOWS程序设计》过程中,对于HINSTANCE的理解很重要,网上多数说其是一个整型变量,其实是不对的。

HINSTANCE定义

通过查找HINSTANCE的定义有WINDEF.H中为:

DECLARE_HANDLE(HINSTANCE);

猜测应该是一条宏定义,继续查看DECLARE_HANDLE()的定义,也在WINDEF.H中,如下:

#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;

可以看出DECLARE_HANDLE()被定义在一个条件预定义中,那么条件是否成立呢,继续查找STRICT的定义,在WINDEF.H的开头下有如下:


#ifndef _WINDEF_
#define _WINDEF_

#ifndef NO_STRICT
#ifndef STRICT
#define STRICT 1
#endif
#endif /* NO_STRICT */

这样就知道STRICT是默认被定义的。

接着看DECLARE_HANDLE()宏的定义,

#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name

##为字符连接,那么

DECLARE_HANDLE(HINSTANCE)

等同于

struct HINSTANCE__ { int unused; }; typedef struct HINSTANCE__ *HINSTANCE;

HINSTANCE是一个指针变量,指向HINSTANCE结构体,而结构体的中只一个int变量。在WINDOWS中句柄多被这种方式进行定义。

转载请注明,本文地址:http://furzoom.com/hinstance-type/

枫竹梦——像风一样追逐自已的梦想!

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《HINSTANCE数据类型》
日志链接:http://furzoom.com/hinstance-type/
博客名称:枫竹梦

【上一篇】
【下一篇】

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部