零起点学会自绘(持续更新)

来源:互联网 发布:网络骗局大全微信 编辑:程序博客网 时间:2024/06/05 05:04
最近在学自绘,我会把我的心得持续写在这个博客上。如有不对之处,请回复,本人会第一时间改正。谢谢!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
子类化:
什么是子类化?别把子类化看的太那个什么了,这个原理跟打仗把通信兵截下换上自己的通信兵一样一样的!
大家想想,是不是在编程时有些控件的某一功能没有?这些功能易语言支持库的开发人员不可能每件事都想到,所以自己动手,丰衣足食,自己做这些功能。之前大家可能都是通过代码来完成,比如让编辑框无法输入特定字符,就在“内容被改变”事件里写判断语句。可是这样费时费力,没法大规模应用,所以,子类化这个“救世主”来啦!
Windows操作系统对于控件功能,都是已“消息”来完成。我们要自绘,就要把这些消息拦截,更改为自己的消息。大家来看看流程图吧。
一步一步学自绘_肥田版 - 肥田 - 随意~~
我自己画了一个打仗原理的流程图:
[原创]零起点学会自绘(持续更新) - 贺仔 - 贺仔的博客
 嘿嘿,知道了吧!怎么拦截?试试API吧!用SetWindowLong这个函数。易语言的格式是:

易语言声明格式:

DLL命令名

返回值数据类型

公开

备注

SetWindowLong

整数型

 

在窗口结构中为指定的窗口设置信息指定数据的前一个值

DLL库文件名

user32 

DLL库中对应命令名

SetWindowLongA 

成员名

类型

传址

数组

备注

hWnd

整数型

 

 

欲为其取得信息的窗口的句柄

nIndex

整数型

 

 

函数的功能索引,参考GWL_相关常量

dwNewLong

整数型

 

 

nIndex指定的窗口信息的新值;

文本代码:

.DLL命令 API_SetWindowLong, 整数型, "user32", "SetWindowLongA", 在窗口结构中为指定的窗口设置信息 指定数据的前一个值
    .参数 hwnd, 整数型, , 欲为其取得信息的窗口的句柄
    .参数 nIndex, 整数型, , 请参考GetWindowLong函数的nIndex参数的说明
    .参数 dwNewLong, 整数型, , 由nIndex指定的窗口信息的新值;
这个么,易语言有个好的API查询工具:易用API伴侣。我不太推荐用易语言的向导API助手。因为他的API不太全,也没有常量。
严重跑题啊= =我说下这个API的说明:dwNewLong参数指定新的属性值。如果nIndexGWL_WNDPROCdwNewLong表示新窗口过程地址,SetWindowsLong调用后返回控件窗口原来的窗口过程地址,由于窗口子类化的出发点就是为了尽量使用控件原有的功能,程序大部分不处理的消息还要靠原来的窗口过程来处理,所以这个地址必须被保存下来,以便下面可以转发消息。
























0 0
原创粉丝点击