吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15226|回复: 20
收起左侧

[易语言 转载] 易语言自绘入门→利用EX_DUI2.0模块(本帖大部分转载百度贴吧内容,模块是我找到的)

[复制链接]
bonkers123 发表于 2013-12-27 10:52
本帖最后由 bonkers123 于 2013-12-28 11:28 编辑

由于帖子内有些会让人误解的地方,我已经做了修改了;以及把需要的模块找到了并放在附件里了,如果还有不懂的可以提问! Ex模块和帖子教学自己跟着教程做的源码.rar (172.32 KB, 下载次数: 218)
不过所有的参数都不要给太多的,就是()括号内的逗号“,”不要放太多,如果运行提示给了太多参数就去掉一些逗号就行了;
1、基本知识
其实我也不懂什么叫自绘,以我的观点来看就是通过调用系统内部的一些乱七八糟的文件创建出来一个界面。比方说那谁谁的界面好漂亮怎么实现的?系统(微软)肯定出了一个DLL,不然你能在win95下得瑟吗?好吧那货叫“Gdi32.dll”或者"GdiPlus.dll"
plus是精装版的意思,寓意华丽丽...
跟我们平常看到的界面不同,自绘界面通常很好看,赏心悦目……
那么他们到底是怎么实现的,答案本身枯燥乏味,最简单我们用封装好的自绘模块,究其也是在GdiPlus.dll在起作用。
就是传说中用代码创建窗口,没关系,你想到的都可以通过代码表达,不会什么常量表的没关系,那都是纸老虎!
2、用户交互体验与软件界面设计艺术
这是相当重要的一课!如果你是一个善于观察的好孩子,你一定会发现有的软件做的相当专业,界面布局相当合理,给人专业的美感;有的则标新立异,操作符合人性化……
首先,你要多看,多看别人的软件(指的不是你去下载别人的小软件,他们自己大多都这课没毕业呢……)你应该看一些界面比较规范的软件,不然纵使你用了多么华丽的效果和界面,界面上牛大的两只按钮,说真的太丢人了,看一眼明天的饭不用吃了。
心中要有目标!
3、针对性解疑
1)、现在我们使用Ex_dui来讲,如何实现镇楼图的效果!(Exdui效果非常不错,按钮不像其他自绘一样像是在点纸片)
首先提出问题,一般我们做软件,都是画一个组件,画一个按钮,然后双击按钮,埋头苦干……
那么漂亮的自绘是如何实现的呢?首先科普一下,使用自绘模块来创建一个自绘程序,我们可以绑定一个窗口,绘制该窗口!或者直接用代码创建出来一个窗口,然后得到了窗口的句柄,再绘制一个窗口出来。
好的,我们可以先创建出来一个窗口。当然,组件不是画上去的,应该是通过代码写出来,别担心,Ex_dui之类的东西已经简单到触及灵魂底限了……我是说真的
然后将Ex_dui添加上去,它是一个EC模块(说给“博学”的人:有本事你玩Gdiplus.dll去,装什么x)
然后我们需要一个变量,他是 d1c385cb39dbb6fd122ac62f0b24ab18972b375a.png
Ex_DirectUI
动态UI!没错的,它是一个类(不要纠结字面含义很麻烦)
那么就需要一个变量,它是数据类型而已。
那么这个变量是全局变量还是程序集变量还是局部变量呢?要看功能,这是UI,当然全局的比较易于掌控一点,局部的话除了那个子程序别的子程序就访问不了了,全局的不太建议,比较费内存,而且用处不是很大。
那么只能是程序集变量,对 “窗口程序集1”的所有代码有效。
那么它应该是这个样子: f21708f3d7ca7bcbac09e526bc096b63f624a866.png
名字自己写,只要方便。“aaa”根据你自己需要填写
然后代码放到哪里?当然是窗口启动的时候,难不成让人自己点击去?
那就双击窗口吧,然后怎么写呢?首先你想,创建一个自绘的窗口,需要绑定一个窗口,然后画它丫的!那么模块怎么知道你要画谁?句柄发挥了作用,首先得让Ex_dui知道你要画谁?当然是启动窗口……


于是有了以下: 5110b7de9c82d158c6c075b8820a19d8bc3e4215.png
看起来只有第一个命令好像可以拿来用。 183b760e0cf3d7cadf10127ff01fbe096a63a9ea.png
窗口句柄,那怎么填?在有窗口的情况下,取出该窗口句柄的命令是:取窗口句柄()
然后这货乖乖给你返回一个窗口句柄,拿来填上就是了。
背景图片随便,底色,恩,按一下F1看看怎么说。
注明:rgb颜色,为空或-1则默认取平均色。
RGB颜色?那就是一般的#红色#白色之类的了,如果你有了底图,那背景底色,底色,就别填了,留空或者-1,它会根据你的那张背景图片给你选出最适合的颜色来
a68e5dee3d6d55fb22ef632f6f224f4a20a4dda3.png
看起来我们已经成功了一大半了,还是继续来研究  挂接皮肤 这货还有什么好玩的东西吧
(不要让你的F1落满灰尘!)
d1c385cb39dbb6fd67fff12f0b24ab18972b372f.png
哦哦,你看懂了么……
其实这个可以加上去的,通过加号! 0a9bbd014a90f6032e3a8a4e3b12b31bb151edce.png

恩……那#标题栏_XX这个东西是啥?是常量吧,帮助理解的,鼠标放上去就能看到它是什么……
4a9961380cd7912357b1847daf345982b2b7807b.png
恩……其实他本来是这样的,本来就是,不过为了让你用的明白……
那么开启透明?难道是填真\假的吗?我也不知道,按F1得了
所处语句为“挂接皮肤”。注明:默认为-1 ( -1,不开启透明;0-255则为透明度)。
看起来是整数而已,意思就是直接填写数字就能让他透明了。(这个透明相当好看的,比你见过的透明好看多了,窗口透明,组件跟窗口一个尿性的哦~)
那随便写吧,最多255,就是不透明了,0你就看不见了(且无法移动这个窗口了)。。。
1713344e251f95cad8b68dbfcb177f3e67095214.png

ba9eed50352ac65cbb77637af9f2b21193138a66.png
至于这些东西,可以F1,然后就秒懂了。。。
其他的大家应该都可以看懂,有的东西可以不填,有的必须填,比如高度,不填你就太难为人家了……
——————窗口创建完毕——————
接下来我们讲怎么详细的搞窗口……
在WinXP中有个BUG,BUG相当奇葩,后来经过观察发现,是这里出现了
问题:
8a5ff61fbe096b63799659590e338744eaf8acc1.png
我们不需要这个东西,搞掉它→设置成无边框就可以了
9a55550fd9f9d72af8611714d62a2834349bbb4f.png
然后这样就皆大欢喜了……
————————
你要问了,那标题哪里加呢?
8faa0b2442a7d933f92fe27aaf4bd11372f001c8.png
绑定了人家要画人家,当然得听人家的话,最起码标题你不能给突突了吧……
所以将会在这里修改好标题。
然后你可能要问了(你必须要学会问,不然代码都我写了要你干嘛?),我镇楼图标题哪里还有个反馈的图标,怎么搞出来呢?还有怎么知道人点击了它呢?
这个东西在 挂接皮肤哪里就有,参数叫控制按钮……没错,它不仅可以控制让窗口显示图标或不显示、显示最大化按钮或者不显示之类的,还能加上设置按钮、反馈按钮等等,甚至是自定义的按钮放到标题栏上!就像QQ的登陆界面那只设置按钮一样……
1c9bd558ccbf6c816e2d2ee1be3eb13533fa40be.png
于是我们有了一个反馈按钮!!那怎么搞点击它才能产生反应呢?
点击!点击!点击是一个动作,是一个事件!系统中会对你的这个操作产生反应,比如你单击QQ的登陆按钮,它不可能不反应!除非你家电脑死机了!所以我们要知道人是不是点了它一下……需要监听~~
由于这个反馈图标是一个叫 E
x_Dictries什么的变量创建的,我们把它写出来看看有什么选项吧……
39219f504fc2d5624c12dde4e51190ef76c66cbe.png
当然根据你的需求,现在我根据地球人的使用习惯选择了通用的事件,左键被单击了!
然后我们来做填空题。
541e31fae6cd7b89b9c8378a0d2442a7d9330e2f.png
照样把鼠标放到这里按下F1,F1如是说:
子程序名:通用事件_左键单击
    通用事件_左键单击(窗口句柄,组件句柄,参数一,参数二,组件类型)
参数<1>的名称为“回调指针”,类型为“子程序指针”,允许接收空参数数据。


它有一个参数叫回调指针,它看起来是这样的:
d4fe32d12f2eb9385d1977fbd7628535e5dd6f58.png
它代表了子程序指针,按F1可以看到,它真的叫子程序指针,在子程序名字前面加上“&”就成子程序指针类型了,填空题正确了?
等等,它的帮助是怎么回事?什么窗口句柄,组件类型,参数一二的?
结合“子程序1”来想一想…………
这八成好像是子程序1应该具备的参数……
那我们来完形填空。
d27fd4160924ab18b72fee3e37fae6cd7b890b92.png
然后它成了这样了,这样的话我们就能收到信息了,知道是那个组件被人戳了。
那么我们怎么知道是最大化按钮被人戳了还是反馈按钮被人戳了呢?
有个重要的角色正在苏醒……
9d8c0e7b02087bf46ab45ce0f0d3572c11dfcf7c.png

它叫做控制按钮_取类型,不难理解,控制按钮,还是画了窗口的那货的,那按钮自然而然就是最小化、设置按钮、反馈按钮那些东西了,在这里我们按下F1:
返回值类型:整数型
参数<1>的名称为“组件句柄”,类型为“整数型”。
它返回整数型?还是取类型?这让人如何是好?不管了,参数1叫组件句柄,恩……拿啥来填呢?好像这个子程序1有个参数来着叫组件句柄……那么填上!

我们调试输出一下,看它到底输出了啥子个整数型呢。。→调试输出(#标题栏_反馈按钮)
e710cd3d70cf3bc762b2c6e5d300baa1cd112a26.png

我们点击了反馈按钮,输出了  128?这……
我们来看看 #标题栏_反馈按钮是个什么东西吧,鼠标放上去
e2c0f6d3572c11dfc8b1c82a612762d0f703c274.png

恩哼~它就是128而已……
然后怎么做呢?判断一下控制按钮_取类型()返回的这个数字是谁的,然后做出反应,这个我相信你已经会做了。

楼上补图2张
3c27b53533fa828b4c97e9eaff1f4134970a5a18.png
当然,这是我写的代码,如果取出来的按钮类型等于这个常量,就弹出信息框,那么这常量里面是啥玩意儿?废话,当然把鼠标挪上去就能看到了,它是128,于是可以这样玩:
8cce952397dda1440f451cbbb0b7d0a20cf48600.png

你现在理解常量了吗?
然后让我们来创建第一个自绘按钮!
跟 Ex_Dirdxres 那个东西一样,需要一个变量,然后……写啥呢?
你需要双击一下那个模块看看了
baea3e87e950352a531655015143fbf2b2118b59.png

恩,它在这里,因为他的同党也在这里,那就没错了:
e33e66d0f703918fc4bc4dc3533d269759eec467.png

它应该看起来最好是这样……然后我们如法炮制:
输入这个变量的名字,an,然后按一个小数点   "   .  "  
于是他有很多东西,我们来翻翻看……
0bcdb71c8701a18bce9e61469c2f07082838fe5f.png

恩,有个叫做创建的家伙,那么双击吧!看看他的参数,都展开来!
我们在做填空题
8eed1fd5ad6eddc45875c8f23bdbb6fd536633c5.png

诶我擦,那这个咋地填写呢?
其实他是这样的:



6be11e4c510fd9f957942960272dd42a2934a4d5.png

那然后呢
照抄无疑是最好的选择....(单击 窗口程序集1)
36193ef33a87e950a5ed8f6512385343faf2b4de.png


这样就好了吗?……因为这个是自绘,所以你用易语言的按钮直接哪里一摆是不科学的,所以请填好参数后删掉要么可视=假,否则很伤感……(按钮点击不反应)
其实很多时候,很多组件有这个参数,不要错过它们,毕竟它们是在太好看了。
比如按钮也有,最关键的就是标签了(如法炮制即可)
7bebb6119313b07e5ffb29010ed7912397dd8c0a.png

推荐大家这个文本效果,描边!很美观很符合人的审美
接下来我们点击了一下按钮,发现按钮没有反应?怎么回事?
好像还需要某种代码……仔细思考一下,这感觉和窗口的那个反馈按钮点击是一种东西……
恩。。首先我们写出来这个按钮的变量,我的是    an.   
然后翻一番!
9bcca96eddc451da823469e2b4fd5266d1163295.png

前面我们已经说过了,点击!点击!是一种行为,电脑视为一种事件,这个事情就是这货被你戳了一下,然后程序管还是不管?于是需要到了  挂接事件
把按钮点击了一下这个事情给他挂接上去,不然点击了没反应那还了得!!
我们又在填空了……
第一个参数叫  事件类型,按F1得了啦,F1是这么说的:
所处语句为“挂接事件”。注明:#事件_。
那敢情好,输入:#事件_
弹出了一堆东西,等等,你特么要点击 #事件_左键按下 吗?
往下翻,好像有个东西叫 #事件_左键单击
这才符合科学!哦不是常理
下面的参数叫 回调指针,前面讲过了,你懂~&子程序2!(这个子程序随你便)
创建了一个子程序后,我们来对子程序2填空,F1如下:
类型为“子程序指针”。注明:回调指针 ( 组件句柄, 事件类型, 参数一, 参数二 )。
需要子程序具备句柄参数,事件类型参数,至于参数1参数2的,你一般不需要就不加了,子程序里面不加了,让他往哪里扔了扔走吧。。。
他们看起来都是整数型。然后第一个参数,需要组件的句柄,不然不知道是谁被戳了一下,那怎么知道呢?
我们回到了创建了那个按钮的哪行代码,按一下F1,发现如图所示:
90215743fbf2b21117a4eb47c88065380dd78ece.png

创建要返回一个整数型?
af37bd389b504fc277dadb0ce7dde71191ef6dcf.png

创建一个按钮……返回整数?那能是什么?按钮数量不成?……应该是那啥,句柄啊~~!!!东西都凑够了,至于第二个,事件类型,前面就已经绑定了是左键单击的,这个就无所谓。
b5e3e2cd7b899e51f02f6e1d40a7d933c8950d2b.png

子程序2看起来是这个样子,他被按钮绑定了。
如果你有很多的按钮,都可以一起来绑定住同类的子程序!
其他组件类似,请双击该模块,找到“类”
然后可以看到很多组件,使用方法和上面的基本一致!
然后我们给按钮加上一个功能,感觉这按钮按一下跟点击右上角的X是一种感觉!
这就是Windows系统强大的消息机制!我们可以给窗口发送一条消息,如果人点击了右上角的X,也会发送给该窗口一条消息!该窗口会看着办的……
我们只需要一条命令,即可模拟出来右上角的“ X ”
发送信息!
发送信息?只需要给该窗口投递一个信息:

发送信息(16,0,0)
不过自绘的话,需要自绘模块提供的命令,他看起来是这样的:
e040212dd42a28345c88650259b5c9ea15cebfa2.png

这样即可!跟发送信息不同的是,前面多了一个参数,叫窗口句柄!(不过不知道MSG这个参数是什么意思,反正16就是关闭窗口的意思)
作用是如果你设置了打开和退出的特效,如果用按钮销毁窗口的话是没有效果出现的,比较悲催,这条命令解决了该问题,强大的Windows消息机智!
——————————
载入和关闭窗口的特效!
893daf18972bd407daf18bf479899e510fb3099a.png

填啥,看F1,好像是 #特效_  
然后双击即可
注意:Ex_dui中部分颜色使用ARGB,不能直接用:#绿色 等表示颜色,需要用到的命令是:
RGBARGB(),里面写上#绿色 等即可。
以上大部分内容是转载百度贴吧的→地址:http://tieba.baidu.com/p/2733198790#

至于到底用的那种颜色标准,可以通过F1来查看帮助!
4e029916fdfaaf5118f294b68e5494eef01f7abb.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wy0715yy8 发表于 2015-3-25 15:41
RGB颜色?那就是一般的#红色#白色之类的了,如果你有了底图,那背景底色,底色,就别填了,留空或者-1,它会根据你的那张背景图片给你选出最适合的颜色来
djxinqing 发表于 2013-12-27 11:18
楼主 你的发的图我们都看不了,最好自己上传发图,用百度连接我们看不到图,谢谢
 楼主| bonkers123 发表于 2013-12-27 11:21
djxinqing 发表于 2013-12-27 11:18
楼主 你的发的图我们都看不了,最好自己上传发图,用百度连接我们看不到图,谢谢

好的。没注意,因为我这边可以看到图的。待会修改一下
爱上___拉你 发表于 2013-12-27 11:29
很的非常好,就是配的图片一张也看不见.希望改进下.谢谢分享
jy3318007 发表于 2013-12-27 11:34
不错啊,希望把图搞好!
凌九天 发表于 2013-12-27 11:45
刚进来发现图挂了
111today111 发表于 2013-12-27 12:25
谢谢分享
rongchuang 发表于 2013-12-27 16:21
谢谢分享……。下载了!
涂白了记忆丶 发表于 2013-12-29 12:04
很的非常好,就是配的图片一张也看不见.希望改进下.谢谢分享
 楼主| bonkers123 发表于 2013-12-29 15:35
涂白了记忆丶 发表于 2013-12-29 12:04
很的非常好,就是配的图片一张也看不见.希望改进下.谢谢分享

请问是什么图看不到呢。我已经换成52里的图片了啊。怎么会还是显示不出来呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 19:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表