摘要: 上次说到我想为DirectUI增加脚本支持,今天我们就来研究下脚本的实现问题。虽然现在有了诸如AntLR、GOLD Parser、TP Lex and Yacc等等CC工具,大大方便了脚本引擎的开发,但我仍然觉得在这个框架里自己实现一套脚本引擎是件毫无意义的事。所以我决定使用现有的脚本引擎。事实上Delphi可用的第三方脚本引擎很多,这里列几个常见的:FastScript号称最快的Delphi脚本引擎,支持 VB、JS、Cpp、Pascal 语法,可以在脚本中使用自定义的类型和对象,内置了对Delphi VCL的支持。ifps/RemObjects PascalScript使用Pascal语法阅读全文
posted @ 2012-02-23 19:35 Sephil 阅读(799) 评论(2) 编辑
摘要: 工作需要开发的一套插件框架,给应用程序提供灵活的插件支持,基于Dll / Interface实现。先上个图这是个标准的基于插件的应用,下拉框里的就是由5个插件Dll提供的功能。主程序中定义了一个接口,而插件Dll则提供这个接口的实现。使用也很简单,在窗口上放置一个TExtensionManager组件,设置一下插件的读取路径就可以了。框架中有3个重要概念,ServiceHost,Module(模块)和扩展(Extension)1.ServiceHost是整个框架的灵魂,不管是主程序中还是插件中,都通过他来查询和使用其他的插件对象。下面是一段使用示例代码: (ServiceHost as ILo阅读全文
posted @ 2012-02-22 23:52 Sephil 阅读(501) 评论(2) 编辑
摘要: 最近公司开发的几个软件都需要支持皮肤,因此花了半个月做了一套皮肤引擎,也就是所谓的Direct UI,即控件都是画在窗体上的,只有容器窗体是有实际句柄的,子控件并非标准的Window。说说这套引擎的几个特性绘制效率尚可,至少图片很多时也没有发现有闪烁;支持的常用图片格式(BMP/JPG/PNG/GIF/ICON等),并支持图片透明;图片延迟载入,避免占用内存资源;皮肤支持多种存储格式,如ZIP打包、EXE内嵌资源等,要扩充新的格式也很方便;容器基于Delphi的TWinControl,例如你在窗口上放置一个Panel,只在这个Panel里使用皮肤;支持同时使用多个皮肤,比如Form1用一种皮肤阅读全文
posted @ 2012-02-22 23:29 Sephil 阅读(242) 评论(1) 编辑
摘要: 今天用VC写工具的时候用到CListView,并且ListCtrl的第一列需要自动拉伸,以占满空白区域Delphi做这个设置是很容易的,只要将Column的AutoSize设置为True就可以了不过VC/SDK的AutoSize其实是根据Item的文本长度来自动设置Column Width,跟我的要求不符,只好自己实现了其实很简单,就是觉得麻烦...voidCMyView::AdjustColumnWidth(){RECTrc;CListCtrl&list=GetListCtrl();CHeaderCtrl*pHeader=list.GetHeaderCtrl();if(!pHeade阅读全文
posted @ 2011-04-03 13:52 Sephil 阅读(229) 评论(0) 编辑
摘要: 今天在写个工具,功能是将一些数据写到磁盘的绝对扇区上.但是发现ReadFile没问题,可是WriteFile总是报87错误(参数不正确).Google上查了一会,发现碰到问题的人不少,可惜没有正确答案....没辙,还是啃MSDN,终于还是自己解决了~呵呵赶紧记下来,免得忘了...其实主要是写入的数据大小,必须是BytesOfSector大小的倍数,一般是512字节,ReadFile却无所谓...另外,MSDN上还说,WriteFile前最好先用FSCTL_LOCK_VOLUME或者FSCTL_DISMOUNT_VOLUME将磁盘锁定或卸载,不过我试下来好像没什么影响...代码摘录如下:1UIN阅读全文
posted @ 2011-03-18 18:18 Sephil 阅读(283) 评论(0) 编辑
摘要: 最近下了不少动画,不过文件名都太长,一般都是 [字幕组][名称][集数][语言][分辨率][编码].后缀 这样的格式我喜欢简单的名字,比如 01.rmvb 之类,可是手动改很麻烦,于是就写了这个 bat,希望对大家有帮助2009-10-16:* 修正了更改文件名部分+ 增加了几个取得名称的方法,在REM注释节[代码]新建个 bat,将以上代码复制至其中即可运行,参数可适当修改阅读全文
posted @ 2009-10-14 10:20 Sephil 阅读(504) 评论(1) 编辑
摘要: 这几天在写个东西,其中有个函数,有这么几句[代码]但是调试发现FullPath总是得于PathName,就是说ExtNames[i]没被加上。。。花了2小时才发现问题。原来PathName是调用ExpandEnvironmentStrings得到的[代码]查MSDN发现,ExpandEnvironmentStrings返回的长度是包括了\0的。。。所以返回的结果最后有个\0,不管你在后面加什么,编...阅读全文
posted @ 2009-05-24 19:18 Sephil 阅读(119) 评论(0) 编辑
摘要: 记得以前在D7下,要隐藏任务栏图标只需要一句
但是今天试了试,在D2007下无效了...
阅读全文
posted @ 2009-05-21 19:23 Sephil 阅读(751) 评论(0) 编辑