• 5947阅读
  • 4回复

易语言改变尺寸后和全屏最大化最小化等源码 [复制链接]

上一主题 下一主题
离线chungbin
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2018-07-11
最近回来写播放器逛论坛发现不少同学不知道怎么设置窗口尺寸改变和全屏等
共享下吧,代码加图片,清晰明了
DLL全部中文化处理
首先我们要下载这个免注册DLL
APlayerCaller.zip APlayerCaller.zip (34 K) 下载次数:44
下载完成后解压到工程项目目录
[attachment=3056]

这时我们下载官网首页的SDK解压到这个目录来
[attachment=3057]

接下来我们到易语言新建windows窗口插入免注册dll(易语言界面顶部的菜单栏==>插入==>dll命令)
[attachment=3058]

下面是全部代码,可从这里复制也可以从我的源码里面复制粘贴

  1. .版本 2
  2. .DLL命令 创建AP, 整数型, "APlayerCaller.dll", "APlayer_Create"
  3.     .参数 句柄, 整数型
  4.     .参数 左边, 整数型
  5.     .参数 顶边, 整数型
  6.     .参数 宽度, 整数型
  7.     .参数 高度, 整数型
  8.     .参数 OnMessage, 整数型
  9.     .参数 引擎状态改变, 整数型
  10.     .参数 成功打开媒体, 整数型
  11.     .参数 异步调用完成后, 整数型, , 尽管本地文件SetPosition(设置播放时间)后,Seek 过程会很快完成,但是网络文件由于要进行数据缓冲等,所以等待时间会比较长,这个事件提供了调用者知晓何时完成播放进度设置的可能性。
  12.     .参数 缓冲媒体数据过程, 整数型
  13.     .参数 分辨率改变时, 整数型
  14.     .参数 缺少对应的解码器时, 整数型
  15.     .参数 扩展事件, 整数型
  16. .DLL命令 打开媒体, 逻辑型, "APlayerCaller.dll", "APlayer_OpenA"
  17.     .参数 播放器, 整数型
  18.     .参数 文件地址, 文本型
  19. .DLL命令 设置引擎配置, 整数型, "APlayerCaller.dll", "APlayer_SetConfigA"
  20.     .参数 播放器, 整数型
  21.     .参数 ID号, 整数型
  22.     .参数 内容, 文本型
  23. .DLL命令 获取引擎版本, 文本型, "APlayerCaller.dll", "APlayer_GetVersion"
  24.     .参数 播放器, 整数型
  25. .DLL命令 Destroy, 逻辑型, "APlayerCaller.dll", "APlayer_Destroy"
  26.     .参数 aplayer, 整数型
  27. .DLL命令 关闭媒体, 逻辑型, "APlayerCaller.dll", "APlayer_Close"
  28.     .参数 播放器, 整数型
  29. .DLL命令 播放, 逻辑型, "APlayerCaller.dll", "APlayer_Play"
  30.     .参数 播放器, 整数型
  31. .DLL命令 暂停, 逻辑型, "APlayerCaller.dll", "APlayer_Pause"
  32.     .参数 播放器, 整数型
  33. .DLL命令 设置LOGO, 逻辑型, "APlayerCaller.dll", "APlayer_SetCustomLogo"
  34.     .参数 播放器, 整数型
  35.     .参数 nLogo, 整数型
  36. .DLL命令 获取引擎状态, 整数型, "APlayerCaller.dll", "APlayer_GetState"
  37.     .参数 播放器, 整数型
  38. .DLL命令 获取总时间, 整数型, "APlayerCaller.dll", "APlayer_GetDuration"
  39.     .参数 播放器, 整数型
  40. .DLL命令 获取当前时间, 整数型, "APlayerCaller.dll", "APlayer_GetPosition"
  41.     .参数 播放器, 整数型
  42. .DLL命令 设置当前时间, 整数型, "APlayerCaller.dll", "APlayer_SetPosition"
  43.     .参数 播放器, 整数型
  44.     .参数 整数时间, 整数型
  45. .DLL命令 获取当前文件宽度, 整数型, "APlayerCaller.dll", "APlayer_GetVideoWidth"
  46.     .参数 播放器, 整数型
  47. .DLL命令 获取当前文件高度, 整数型, "APlayerCaller.dll", "APlayer_GetVideoHeight"
  48.     .参数 播放器, 整数型
  49. .DLL命令 获取音量, 整数型, "APlayerCaller.dll", "APlayer_GetVolume"
  50.     .参数 播放器, 整数型
  51. .DLL命令 设置音量, 整数型, "APlayerCaller.dll", "APlayer_SetVolume"
  52.     .参数 播放器, 整数型
  53.     .参数 整数音量, 整数型
  54. .DLL命令 IsSeeking, 整数型, "APlayerCaller.dll", "APlayer_IsSeeking"
  55.     .参数 aplayer, 整数型
  56. .DLL命令 获取缓冲进度, 整数型, "APlayerCaller.dll", "APlayer_GetBufferProgress"
  57.     .参数 播放器, 整数型
  58. .DLL命令 获取引擎配置, 文本型, "APlayerCaller.dll", "APlayer_GetConfigA"
  59.     .参数 播放器, 整数型
  60.     .参数 ID号, 整数型
  61. .DLL命令 获取AP窗口句柄, 整数型, "APlayerCaller.dll", "APlayer_GetWindow"
  62.     .参数 播放器, 整数型
  63. .DLL命令 api_MoveWindow, , "user32", "MoveWindow", , 改变指定窗口的位置和大小
  64.     .参数 句柄, 整数型
  65.     .参数 左边, 整数型
  66.     .参数 顶边, 整数型
  67.     .参数 宽度, 整数型
  68.     .参数 高度, 整数型
  69.     .参数 是否重画, 逻辑型
接下来我们插入全局变量,这个变量就是播放器的变量,类型为整数型(易语言界面顶部菜单栏==>插入==>全局变量)
为了方便大家认识我们起名为aplayer,名字可以随便起
[attachment=3059]

下面是代码
  1. .版本 2
  2. .全局变量 aplayer, 整数型
接下来我们到_启动窗口视图双击窗口就会默认跳转到_启动窗口的代码程序集页面书写代码(也可在属性视图里面选择创建完毕事件跳转)
首先我们来创建一个ap容器
[attachment=3061]

黑色底色被论坛吃掉了就变成了上面这样的形状。。。。
下面是代码
  1. .版本 2
  2. .程序集 窗口程序集_启动窗口
  3. .子程序 __启动窗口_创建完毕
  4. aplayer = 创建AP (_启动窗口.取窗口句柄 (), 0, 0, _启动窗口.宽度, _启动窗口.高度, 0, 0, 0, 0, 0, 0, 0, 0)
下面我们来写窗口尺寸改变是的ap跟随改变代码
首先就是需要给ap一个句柄方便调整AP容器
这个句柄可以是从APlayerCaller.dll里面的APlayer_GetWindow获取也可以是getconfig的20获取
我们来从APlayerCaller.dll里面的APlayer_GetWindow获取
全局变量里面新建ap句柄类型为整数型
  1. .版本 2
  2. .全局变量 ap句柄, 整数型
然后到窗口创建完毕页面添加AP句柄代码

  1. ap句柄 = 获取AP窗口句柄 (aplayer)
接下来就是调整尺寸代码了


返回_启动窗口的窗口页面点击窗口选择_尺寸被改变事件(也可以直接在代码页面直接书写代码而不必返回选择)
代码看图和代码
[attachment=3062][attachment=3063]

  1. .版本 2
  2. .子程序 __启动窗口_尺寸被改变
  3. api_MoveWindow (ap句柄, 0, 0, _启动窗口.宽度, _启动窗口.高度, 真)
接下来就是全屏和最大化了
最新的易语言自带最大化不遮挡任务栏了,不需要手动去获取任务栏高度了。
如果使用的自带的IDE只要在属性里将控制按钮的最大化按钮选为真即可
[attachment=3064]

如果是自定义的最大化按钮跟着我下面来
我们先弄关闭最大化和最小化按钮上去
[attachment=3065]

接着返回修改尺寸改变事件代码
先将AP的顶边调为20像素
  1. api_MoveWindow (ap句柄, 0, 20, _启动窗口.宽度, _启动窗口.高度, 真)
接着添加如下代码
  1. .版本 2
  2. 关闭按钮.移动 (_启动窗口.宽度 - 关闭按钮.宽度 - 5, 0, , )
  3. 最大化按钮.移动 (关闭按钮.左边 - 最大化按钮.宽度 - 5, 关闭按钮.顶边, , )
  4. 最小化按钮.移动 (最大化按钮.左边 - 最小化按钮.宽度 - 5, 关闭按钮.顶边, , )
[attachment=3066]

这三个按钮的事件代码如下
  1. .版本 2
  2. .子程序 _关闭按钮_被单击
  3. 结束 ()
  4. .子程序 _最大化按钮_被单击
  5. .如果 (_启动窗口.位置 ≠ 3)
  6.     _启动窗口.位置 = 3
  7. .否则
  8.     _启动窗口.位置 = 0
  9. .如果结束
  10. .子程序 _最小化按钮_被单击
  11. _启动窗口.位置 = 2
[attachment=3067]
关于_启动窗口.位置代码说明

成员属性“位置”所在数据类型为“窗口”,英文名称为“pos”,类型为“整数型(int)”。
    本属性设置窗口的位置及状态。注意如果欲设置为“最大化”,“边框”属性必须不为固定类边框。
        可供选择的属性值:
        0. 通常
        1. 居中
        2. 最小化
        3. 最大化
易语言窗口左下角的“”“提示”会有代码的说明和提示
[attachment=3068]

接下来我们就是写全屏了,这几个按钮全是复制我其它播放器的按钮过来的
先添加一个全屏按钮
新增一个是否全屏的逻辑变量
根据自己需求是否为程序集变量或者全局变量
本教程为程序集变量
  1. .版本 2
  2. .程序集变量 是否全屏, 逻辑型
在_启动窗口。创建完毕事件下添加默认的是否全屏逻辑代码为假
  1. 是否全屏 = 假
添加全屏按钮被单击事件代码
添加全屏前的位置变量
  1. .版本 2
  2. .程序集变量 全屏前左边, 整数型
  3. .程序集变量 全屏前顶边, 整数型
  4. .程序集变量 全屏前宽度, 整数型
  5. .程序集变量 全屏前高度, 整数型



  1. .版本 2
  2. .子程序 _全屏按钮_被单击
  3. .如果 (是否全屏 = 假)
  4.     全屏前左边 = _启动窗口.左边
  5.     全屏前顶边 = _启动窗口.顶边
  6.     全屏前宽度 = _启动窗口.宽度
  7.     全屏前高度 = _启动窗口.高度
  8.     _启动窗口.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ())
  9.     api_MoveWindow (ap句柄, 0, 0, _启动窗口.宽度, _启动窗口.高度, 真)
  10.     是否全屏 = 真
  11.     _启动窗口.随意移动 = 假
  12.     _启动窗口.可否移动 = 假
  13.     _启动窗口.总在最前 = 真
  14.     关闭按钮.可视 = 假
  15.     最大化按钮.可视 = 假
  16.     最小化按钮.可视 = 假
  17. .否则
  18.     是否全屏 = 假
  19.     _启动窗口.移动 (全屏前左边, 全屏前顶边, 全屏前宽度, 全屏前高度)
  20.     _启动窗口.随意移动 = 真
  21.     _启动窗口.可否移动 = 真
  22.     _启动窗口.总在最前 = 假
  23.     关闭按钮.可视 = 真
  24.     最大化按钮.可视 = 真
  25.     最小化按钮.可视 = 真
[attachment=3069][attachment=3070]
全部代码图




源码附上,自己下载参考吧
新建文件夹.zip (1098 K) 下载次数:300









离线aplayer

只看该作者 沙发  发表于: 2018-07-13
离线chungbin

只看该作者 板凳  发表于: 2018-07-13
鄙视拿全屏和最大化来卖播放币的
本帖提到的人: @liu123204207
离线hangyubin

只看该作者 地板  发表于: 2018-07-15
学习了!谢谢分享!
离线不收

只看该作者 4楼 发表于: 08-02
你那个DLL参数播放器,是aplayer 的句柄吗??为啥只要是参数是播放器的,我都无法运行。打开媒体文件就创建后的LOGO没了,然后就没了。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个