HINSTANCE数据类型
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
在看《 WINDOWS程序设计 》过程中,对于HINSTANCE的理解很重要,网上多数说其是一个整型变量,其实是不对的。http://furzoom.com/
HINSTANCE定义

通过查找HINSTANCE的定义有WINDEF.H中为:
|
001
|
DECLARE_HANDLE(HINSTANCE); |
猜测应该是一条宏定义,继续查看DECLARE_HANDLE()的定义,也在WINDEF.H中,如下:
|
001
002
003
004
005
006
007
008
|
#ifdef STRICTtypedef void *HANDLE;#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name#elsetypedef PVOID HANDLE;#define DECLARE_HANDLE(name) typedef HANDLE name#endiftypedef HANDLE *PHANDLE; |
可以看出DECLARE_HANDLE()被定义在一个条件预定义中,那么条件是否成立呢,继续查找STRICT的定义,在WINDEF.H的开头下有如下:
|
001
002
003
004
005
006
007
008
|
#ifndef _WINDEF_#define _WINDEF_#ifndef NO_STRICT#ifndef STRICT#define STRICT 1#endif#endif /* NO_STRICT */ |
这样就知道STRICT是默认被定义的。
接着看DECLARE_HANDLE()宏的定义,
|
001
|
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name |
##为字符连接,那么
|
001
|
DECLARE_HANDLE(HINSTANCE) |
等同于
|
001
|
struct HINSTANCE__ { int unused; }; typedef struct HINSTANCE__ *HINSTANCE; |
HINSTANCE是一个指针变量,指向HINSTANCE结构体,而结构体的中只一个int变量。在WINDOWS中句柄多被这种方式进行定义。
来自:HINSTANCE数据类型-WINDOWS程序设计-枫竹梦
HINSTANCE数据类型的更多相关文章
- C# 与 C++ 数据类型比较及结构体转换
引自:http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++ C# =============== ...
- Windows数据类型
WORD:16位无符号整形数据 DWORD:32字节无符号整型数据(DWORD32) DWORD64:64字节无符号整型数据 INT:32位有符号整型数据类型 INT_PTR:指向INT数据类型的指针 ...
- 1-4-2 Windows数据类型与重要数据结构
主要内容:介绍Windows数据类型与重要数据结构 1.数据类型 在Windows系统中定义了Windows应用程序中包含种类繁多的数据类型, 部分如下: WORD 16位无符号整数 typedef ...
- C# 与 C++ 数据类型对照
C++ C#=====================================WORD ushortDWORD uintUCH ...
- 【Windows】Windows中的数据类型以及命名
一.大写标示符 Windows中的很多标识符都是以两个或者三个大写字母作为前缀的,且其后紧跟一个下划线.这些标识符都是常量数值,前缀表明该常量的一般类别.如下 前缀 常量 CS(Class Style ...
- 【Windows核心编程】Windows常见数据类型
一,常见数据类型 WORD: 16位无符号整形数据 DWORD: 32位无符号整型数据(DWORD32) DWORD64: 64位无 ...
- C#中调用Windows API时的数据类型对应关系
原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE=System.UInt16 CHAR=System. ...
- windows API与C#的数据类型对应关系表
API与C#的数据类型对应关系表 API数据类型 类型描述 C#类型 API数据类型 类型描述 C#类型 WORD 16位无符号整数 ushort CHAR 字符 char LONG 32位无符号整数 ...
- 【转载】C++ ,C#数据类型对照
C++ C#=====================================WORD ushortDWORD uintUCH ...
随机推荐
- hadoop面试时可能遇到的问题
面试hadoop可能被问到的问题,你能回答出几个 ? 1.hadoop运行的原理? 2.mapreduce的原理? 3.HDFS存储的机制? 4.举一个简单的例子说明mapreduce是怎么来运行的 ...
- nginx 去掉服务器版本和名称和nginx_status 状态说明
可能有时候我们看某些站点想知道别人在使用什么版本的web服务器之类的信息时,却发现并未显示版本号,甚至连WEB服务器都有变化,可以通过以下方法来隐藏Nginx.PHP的版本号信息,来提升一定的安全性: ...
- Log4net创建日志及简单扩展
转:http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log ...
- 提取WORD中的所有InlineShape图片并保存成文件
InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等. 下面是MSDN中的定义:Represents an object in the text layer of a d ...
- BrnShop开源网上商城第四讲:自定义插件
重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...
- Read ListViewItem content from another process z
Normal Windows GUI applications work with messages that are sent to a window or control and the cont ...
- ps中套索工具怎么使用的方法
ps中套索工具怎么使用的方法 http://jingyan.baidu.com/article/5553fa82e864cc65a2393482.html
- oracle删掉重复数据的语法
--查询重复数据-- ) --删掉重复数据-- ) );
- Oracle将英文字符集数据转换成中文
转换背景:老系统数据为英文字符集,需要将老数据(Oracle 8i)转换到oracle 10g(中文字符集)中 思路:先将老数据从8i的数据库中导出,导出的数据库文件为英文字符集,再将10g的数据库改 ...
- Kettle汇总时参数
Kettle汇总时手动执行小时汇总命令: ./kitchen.sh -norep -file /usr/local/evqm/kettle/kettle_scripts/rpt_hour.kjb -p ...