易语言微凉模块oracle,跟着微凉学易语言 【简单子类化】

本文介绍了易语言中使用API函数进行窗口子类化的方法,详细讲解了GetWindowLong、SetWindowLong和CallWindowProc三个API的用法,以及如何定义回调函数WindowProc。通过子类化,可以拦截并处理特定窗口消息,例如阻止WM_CLOSE消息以防止窗口关闭。文章适合有一定基础的易语言学习者,通过实例代码帮助理解子类化的实现过程。
摘要由CSDN通过智能技术生成

本帖最后由 【微凉清风】 于 2011-1-20 18:23 编辑

易语言的子类化文章太少了,本人文笔也不好哈,看看VB得吧,别说英文看不懂,看不懂你的易语言水平永远不会提高!一,初识子类

当你还不碰过子类的时候,你看到这个标题,定会问:"啥叫子类?".因为你知道我定会为你解答.(阴险哪~~~),因为鄙人文才不好,不知如何以最详细最能理解的方式为你解答,所以到网上偷了一段,还请各位笑纳:

子类处理,是一种功能强大的技术,它的作用是对发送到窗口的消息进行处理,我们完全可以用自己定制的一个窗口函数替代它,并保留指向默认窗口函数的指针,当一个消息到达窗口时,自制的窗口函数会拦截它并进行识别处理,对不能识别或不需进行特别处理的消息,就通过指向默认窗口函数的指针传递给默认的窗口函数进行处理,这样便扩充了默认窗口函数的功能。这种用定制的窗口函数代替默认的窗口函数,拦截并处理到达窗口的消息的技术,我们就称之为“子类处理”,定制的函数我们称之为“回调函数”。

上面解释可能较复杂,但是我们现在也没必要完全搞懂它,因为有了实例这一切就自然明白了.

首先,在使用子类的时候,我们需要用到三个API函数,它们分别是 GetWindowLong, SetWindowLong, CallWindowProc(没吓到你吧?),这三个函数不难,可以说是很简单,有了它们,我们实现子类化成为可能,先来看看 GetWindowLong API函数的原型:

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

前面的我都不说了,只看参数:

ByVal hwnd As Long ,不用我说了吧?传句柄的(问:谁的句柄? 答:当然是你要子类的那个窗口的句柄啦)

ByVal nIndex As Long ,咳咳,这个嘛,需要传递一个常量,至于传递什么样的常量,咱们用前段时间学习的API分析大法分析下不就OK了么?(嘿~~聪明)

第二个参数具体传递什么样的参数,根据这个API的名称进行分析(问:为什么啊? 答:倒,API的常量一般都和API名字有很大关联的,难道还分析你的名字不成么?),首先是  Get = G, Window = W, Long = L,合成以后就是 GWL_ ,OK ,打开API 浏览器,转到常量,输入 GWL_ 四个字符看看?有没?没有我马上玩游戏去~~~~~~~~~~

Public Const GWL_EXSTYLE = (-20)

Public Const GWL_HINSTANCE = (-6)

Public Const GWL_HWNDPARENT = (-8)

Public Const GWL_ID = (-12)

Public Const GWL_STYLE = (-16)

Public Const GWL_USERDATA = (-21)

Public Const GWL_WNDPROC = (-4)

很多哈,但是实现子类的时候我们只需要一个,那就是 GWL_WNDPROC,至于其它的常量我建议大家看看MSDN,如果你看不懂的话可以参考下我以前发的关于一篇大量使用 GetWindowLong 和 SetWindowLong 两个API函数的文章,地址是: http://www.vbgood.com/viewthread.php?tid=46956&highlight= (建议学完该段API介绍再看)

然后,我们再看看 SetWindowLong 原型:

Public Declare Function SetWindowLong Lib "user32" Alias &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值