找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5580|回复: 14

[飞鸟集] 简易的多媒体播放器

[复制链接]

已领礼包: 8121个

财富等级: 富甲天下

发表于 2016-6-7 17:08:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Highflybird 于 2016-6-7 20:53 编辑

说明: 本软件采用Visual LISP编写。通过DynamicWrapperX插件,用LISP的对话框实现了播放电影或者音乐的功能。程序运行命令是:MMP. 基于LISP的一些限制,有些播放功能未实现,譬如全屏后的复位,自动进行下一曲,以及很多格式的电影不支持等等。
待以后研究完善。   
程序在此:
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:MMPlayer.rar 
下载次数:43  文件大小:11.44 KB 
下载权限: 不限 以上  [免费赚D豆]


演示图片只能显示256色,但实际是可以显示真彩色的。
movie.gif
需要源码的:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:MMPlayer-Source.rar 
下载次数:44  文件大小:8.92 KB  售价:10D豆 [记录]
下载权限: 不限 以上  [免费赚D豆]


那些用源码加载的却提出“怎么没有出现对话框?”,我这里不回答这个问题。请自己思考解决。
发个真彩色的截图:
movie.jpg

评分

参与人数 2D豆 +10 贡献 +1 收起 理由
WhoCanSay + 5 很给力!经验;技术要点;资料分享奖!
newer + 5 + 1

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-7 17:15:23 | 显示全部楼层
支持,酷,炫,叼
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

发表于 2016-6-7 21:08:41 | 显示全部楼层
支持高大师
你太牛了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-6-17 13:22:51 | 显示全部楼层
本帖最后由 WhoCanSay 于 2016-6-17 15:21 编辑

MMP.vlx中加入DynamicWrapperX自动注册就好了,可以立即看到效果:lol 没有成功,显示如下信息
[0.118] (VL-BT)
[1.114] (*ERROR* "DynamicWrapperX.2: Argument value out of range for the
parameter type")
[2.109] (_call-err-hook #<SUBR @0da3cd5c *ERROR*> "DynamicWrapperX.2: Argument
value out of range for the parameter type")
[3.103] (sys-error "DynamicWrapperX.2: Argument value out of range for the
parameter type")
:ERROR-BREAK.98 nil
[4.95] (IDispatch.Invoke #<VLA-OBJECT 0f148220> SELECTOBJECT 1 637601352
2.09598e+011)
[5.86] (vlax-invoke #<VLA-OBJECT 0f148220> SELECTOBJECT 637601352 2.09598e+011)
[6.78] (DWX:LISTTEXTWIDTH #<VLA-OBJECT 0f148220> 2228864 ("冰雪奇缘.mp4"))
[7.71] (MMP:OPENFILE #<VLA-OBJECT 0f148220> 2228864)
[8.65] (#<SUBR @0da3ecd0 -lambda-> "OPEN" "1" "" 1 97 29)
[9.56] (#<SUBR @0a80599c -application-envelope->)
:ENTRY-NAMESPACE.53 (:ENTRY-NAMESPACE)
[10.50] (#<SUBR @0a8059c4 -unwind-protect->)
[11.47] (_lisplet-apply #<Document-LISPLET> #<SUBR @0a80599c
-application-envelope-> nil nil)
[12.39] (_lisplet-app-apply #<Document-LISPLET> #<SUBR @0da3ecd0 -lambda->
("OPEN" "1" "" 1 97 29))
[13.32] (dcl-call-back ("OPEN" "1" "" 1 97 29) nil)
:DCL-ACTION.26 :DCL-ACTION
[14.23] (START_DIALOG)
[15.19] (C:MMP)
[16.15] (#<SUBR @0da3ecbc -rts_top->)
[17.12] (#<SUBR @0a800334 veval-str-body> "(C:MMP)" T #<FILE internal>)
:CALLBACK-ENTRY.6 (:CALLBACK-ENTRY)
:ARQ-SUBR-CALLBACK.3 (nil 0)


点评

我怀疑与selectobject 这个函数有关 把(setq ret (vlax-invoke DWX 'SelectObject pDC Font)) 改成: (setq ret (vlax-invoke DWX 'SelectObject pDC (rtos Font 2 0))) 把 (vlax-invoke DWX 'Register "GD  详情 回复 发表于 2016-6-21 10:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-6-17 15:51:09 | 显示全部楼层
以前的函数ReadBinary 也与现在不同,生成的结果也不同。我是用现在的ReadBinary转成的DynwrapX64.txt,但显示注册成功,会不会与这个函数有关系?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2016-6-21 10:49:26 | 显示全部楼层
WhoCanSay 发表于 2016-6-17 13:22
MMP.vlx中加入DynamicWrapperX自动注册就好了,可以立即看到效果 没有成功,显示如下信息;
[0.118]  ...

我怀疑与selectobject 这个函数有关
把(setq ret   (vlax-invoke DWX 'SelectObject pDC Font))
改成:
(setq ret   (vlax-invoke DWX 'SelectObject pDC (rtos Font 2 0)))

(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=hh" "r=h")
改成:
(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=mm" "r=h")
试试看

评分

参与人数 1D豆 +5 收起 理由
WhoCanSay + 5 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3199个

财富等级: 富可敌国

发表于 2016-6-21 16:45:59 | 显示全部楼层
高飞大师,是否有更新呢?

点评

这个目前不准备更新了,这个程序用于娱乐性质的。 里面有几个函数代码倒是可以在其他方面用上的。 譬如: 1.通用文件对话框。 2.列表框加水平滑动条,让它自适应一些比较长的文字宽度。 3.改变对话框中的一些按  详情 回复 发表于 2016-6-23 00:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2016-6-23 00:08:51 | 显示全部楼层
lucas3 发表于 2016-6-21 16:45
高飞大师,是否有更新呢?

这个目前不准备更新了,这个程序用于娱乐性质的。
里面有几个函数代码倒是可以在其他方面用上的。
譬如:
1.通用文件对话框。
2.列表框加水平滑动条,让它自适应一些比较长的文字宽度。
3.改变对话框中的一些按钮或者控件的位置和大小。这是普通DCL操作函数做不到的。
4.一些多媒体的API函数。



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-7-15 09:46:09 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2016-7-15 11:04 编辑

学过fortran 、Basic,还知道几个dos命令,甚至还到“萌码”那个网页上去学过一个什么语言(忘了),还曾用VB编过一个比"hello world"稍复杂一点的程序。但看不懂(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=mm" "r=h")这种写法。求大师指点一下方向
为了看懂(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=mm" "r=h")这种写法,这段时间我在学习C语言,发现除了指针(地址)外,和lisp也没有什么不同。这种写法VB与lisp的转换关系也不同呀
关系.png

点评

你看看这个插件的帮助说明吧。 我建议你放弃用这个插件来编程吧。因为说实在话,真的不好操作。  详情 回复 发表于 2016-7-15 14:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2016-7-15 14:36:07 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2016-7-15 09:46
学过fortran 、Basic,还知道几个dos命令,甚至还到“萌码”那个网页上去学过一个什么语言(忘了),还曾用V ...

你看看这个插件的帮助说明吧。
我建议你放弃用这个插件来编程吧。因为说实在话,真的不好操作。

点评

应该鼓励,不是打击:p  详情 回复 发表于 2016-7-15 15:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2016-7-15 15:47:02 | 显示全部楼层
Highflybird 发表于 2016-7-15 14:36
你看看这个插件的帮助说明吧。
我建议你放弃用这个插件来编程吧。因为说实在话,真的不好操作。

应该鼓励,不是打击:p
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-7-15 16:13:11 | 显示全部楼层
的确很难
〈Win32API.Txt〉上的东西吃不透,但是为了消磨时光,总是要找点事来做的。
不是为了DWX这个插件,主要是为了ActiveX
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-7-15 16:20:30 | 显示全部楼层
CSharpBoy 发表于 2016-7-15 15:47
应该鼓励,不是打击:p

大师说的是对的。其实我也从没想过学什么计算机语言,主要是看起来耍的。争取再混几年就退休了。我有感于车间一个辅助工,离退休还有几个月了,他还去考起重证,没有这个证,他是不能开行车的。他有一句话说得对,其它辅助工有的,我也要有。

点评

对,为何不同,恰恰是因为这个函数用了指针。 为了你更清楚了解DynamicWrapperX的用法,我们来逐字解读这句(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=mm" "r=h"): vlax-invoke --- ActiveX 物体  详情 回复 发表于 2016-7-16 04:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8121个

财富等级: 富甲天下

 楼主| 发表于 2016-7-16 04:35:55 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2016-7-15 16:20
大师说的是对的。其实我也从没想过学什么计算机语言,主要是看起来耍的。争取再混几年就退休了。我有感于 ...


对,为何不同,恰恰是因为这个函数用了指针。
为了你更清楚了解DynamicWrapperX的用法,我们来逐字解读这句(vlax-invoke DWX 'Register "GDI32" "SelectObject" "i=mm" "r=h"):
vlax-invoke --- ActiveX 物体的LISP调用函数
DWX ---- DynamicWrapperX对象实例
'Register ---- 调用方法为 注册API函数
"GDI32"---- WINAPI函数的库文件
"SelectObject" ---- WinAPI函数名,大小写敏感,有ansi和unicode之分。
"i=mm" ---- 调用需要的参数和类型,"i="固定写法,"mm"代表有两个参数,参数的类型都为 "m"型,即64位整数型,代表一个指针,或者句柄,或者windows设备号之类,为了兼容32位和64位CAD,故用"m",32位CAD可以用 "i=ll"。
"r=h" ----代表函数返回值为设备句柄。

这句仅仅是说明已经在LISP中注册了"SelectObject"这个函数,并非实际执行。 要真正使用这个API,必须通过通过DWX来调用,例如下面代码:
  1. (setq ret (vlax-invoke DWX 'SelectObject pDC Font))


如果用VB语句来表达,类似:
  1. Public Declare Function SelectObject Lib "GDI32" (ByVal hdc As Long,  hgdiobj As Long) As Long

然后VB就可以用SelectObject这个函数了。

参考: https://msdn.microsoft.com/en-us/library/dd162957(v=vs.85).aspx中关于SelectObject解释:
  1. HGDIOBJ SelectObject(  _In_ HDC     hdc,  _In_ HGDIOBJ hgdiobj);

该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。

当然如果用C++编程,很简单的一句话了:
  1. pDC->SelectObject(fontObj);

或者
  1. ::SelectObject(pDC,fontObj);

可见这里里面所传递的参数以及返回值都是指针类的。这个特性是与LISP语言很大区别的。
因此如果用DynamicWrapperX编程,就必须首先了解C++关于指针的用法,了解WinAPI函数的用法,顺便了解一点汇编语言的基本知识。如果不是天才,这些东西不是一两天就可以学会的。

所以我的建议是放弃!不要舍本逐末,不要因为有这个插件可能会带来的新的功能或者LISP语言不具备的优势而去钻研一个与LISP特性很不相同的东西。LISP已经足够强大,如果有达不到的,我们就让别的语言去实现吧。

评分

参与人数 1D豆 +10 收起 理由
newer + 10 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-7-18 08:26:30 | 显示全部楼层
Highflybird 发表于 2016-7-16 04:35
对,为何不同,恰恰是因为这个函数用了指针。
为了你更清楚了解DynamicWrapperX的用法,我们来逐字解 ...

谢谢大师耐心讲解,李白的一句诗可以形容此时我的心情:使人闻此凋朱颜。幸好我不是以经为职业!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-5 23:25 , Processed in 0.595634 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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