windows程序设计之定义窗口句柄

windows程序设计之定义窗口句柄HWNDhwnd 什么叫做句柄呢 句柄最原始的定义为 typedefvoid HANDLE 就是一个指针 在 32 位 windows 中占用 4 个字节 它指向内存的大小由它的类型决定 函数用句柄来传递数据 句柄在 winnt h 中是这么定义的 ifdefSTRICTt HANDLE 这就是 HANDLE 的定义 define

HWND         hwnd ;

什么叫做句柄呢?

句柄最原始的定义为typedef void *HANDLE;

就是一个指针,在32位windows中占用4个字节 ,它指向内存的大小由它的类型决定。函数用句柄来传递数据。句柄在winnt.h中是这么定义的:

#ifdef STRICT typedef void *HANDLE; 这就是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; 

STRICT修饰符的意思是变量类型是否要求严格定义。在这里,我们可以看到HANDLE其实就是一个void类型的指针。这样有什么用呢?学过c/c++语言的人都知道,void类型的指针可以通过强制类型转换变为任何类型的指针,使用最灵活。在很多情况下,句柄是一个对象的指针,或者说是地址,一个对象的地址。比如对于分配的一个内存块(对象),它的句柄就是它的首地址,这没什么问题。但是这并不总是成立的,对于没有对象意义的句柄尤其如此。这就取决与系统的定义了。比如系统钩子的类型HHOOK,说它是地址就没有任何意义。对于窗口句柄也是如此。在这些情况下,我们可以把句柄理解为某事物在系统该类事物列表中的ID。   

下面是windows应用程序的常用句柄类型:

句柄类型

说明

句柄类型

说明

HANDLE

一般句柄类型

HICON

图标句柄类型

HWND

窗口句柄类型

HCURSOR

光标句柄类型

HINSTANCE

程序实例句柄

HBRUSH

画刷句柄类型

HDC

设备描述句柄

HPEN

画笔句柄类型

HMENU

菜单句柄类型

HFONT

字体句柄类型

HBITMAP

位图句柄类型

HFILE

文件句柄类型

最基本的句柄定义为HANDLE 其实就是void*类型或者是int 类型。

窗口句柄hwnd用于保存CreateWindow返回的窗口句柄。CreateWindow会根据应用程序名szAppName所对应的窗口对象类来创建一个窗口,并将该窗口的句柄返回。

注意窗口句柄和应用程序句柄是有区别的。

窗口句柄是用户接口,即界面的句柄,用户可以通过这个句柄来控制界面的输入或输出。比如从界面获得控件的输入值,或在界面上绘制图形等。

而应用程序实例句柄是控制整个应用程序的。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216448.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:49
下一篇 2026年3月18日 上午11:50


相关推荐

  • 用ASP实现简单的繁简转换

    用ASP实现简单的繁简转换

    2021年11月15日
    66
  • 使用moment格式化日期

    使用moment格式化日期案例:本例是在react-native中格式化日期1,引入moment2,使用moment例如:letstartDate=moment(‘2018-09-27’).format(YYYY-MM-DD);moment使用详解:格式化日期当前时间:moment().format(‘YYYY-MM-DDHH:mm:ss’);//2014-09-2423:…

    2022年6月11日
    56
  • matlab里function函数的用法,function函数 function函数的具体用法

    matlab里function函数的用法,function函数 function函数的具体用法我们在用 Excel 的过程当中经常会看到各种各样的函数 其中就包括 funection 函数 然而对于 funectioe 函数步了解的朋友一定不知道这一个函数是如何使用的 所以今天小编就来讲解这一个函数的具体使用方式是怎么样的 function 函数 function 函数的具体用法 function 函数的具体用法函数实际上是一个统一的代码块 你可以随时调用它 创建 PHP 函数的方法 所有函数的开头必须

    2026年3月19日
    2
  • navicat premium 15 mac 激活码【中文破解版】

    (navicat premium 15 mac 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlDB847YMYYZ-eyJsaWNlbnNlSW…

    2022年3月26日
    87
  • dom4j java对象_dom4j解析XML成对象

    dom4j java对象_dom4j解析XML成对象最近不太忙,发现现在服务之间的交互都是通过xml进行的,所以今天理了一下xml的两种解析方式。首先是最流行的dom4j解析。先解析,然后通过反射转成对象。用到的jar:dom4j-1.6.1.jarjaxen-1.1.1.jar1.xml字符串转成对象:class=”java”name=”code”>/***解析XMl字符串数据,转化成对象,并返回*@paramxmlxml字符串…

    2022年6月21日
    31
  • 程序员转行为啥啦么难

    程序员转行为啥啦么难

    2022年3月1日
    174

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号