一、数据结构保存 由于我的目标是提供自定义组件添加和属性调整,而每个组件的属性又完全不一样,因此,用数据库来操作项目文件,灵活性实在是让人头痛的一件事,经过再三斟酌,终于选择了现在的方式:xml树。方便的节点操作和属性操作完全能够满足项目文件设置的需要。 于是,从零开始研究xml树支持库,总算顺利应用到程序中了。 二、组件操作 根据常用的课件演示需要,一开始,我设计了以下五种组件:文本框、图片框、视频框、音乐框、动画框。 在实际操作中,我发现,用多媒体命令来播放视频,必须要在窗口上,如果是在某一窗口组件上的话,会有无法自动刷新显示的问题,因此,最后,只好屏蔽了视频框的自由操作。 另外,动画框我使用了矢量动画支持库的矢量动画框,但实际使用时才发现,用它来播放动画实在是力不从心,限制太多,几乎我能找到的动画,它都不支持。没办法,干脆也屏蔽了。 而文本框,考虑到所见即所得的效果,我用透明标签来代替,只在编辑时,才让编辑框现身。 图片框没啥说的。 音乐框,我用了超级按钮,不为别的,只为了好看,和便于通过单击来操作。 如果以后考虑出注册版,我肯定会将视频框和动画框用外部ocx加上的。现在么,只能通过附加资源里来添加了。 对于组件的移动和调整大小,其信息值来源于论坛中dingkun提供的代码,在此表示感谢。 组件操作,化费了我最多的精力,反正是源代码,大家自己看吧。 三、音乐播放 由于视频、动画等都放到了附加资源里,它们的播放相对来说,比较容易控制。而音乐,则因为我允许设置自动播放、全局播放和播放次数限制,因此,控制起来也颇费了一翻思量。 现在的解决方案是:不管每个页面有多少音乐框,我都用二维数组来取其最大值。将每个页面的音乐框与具体的页面号、组件索引相对应。然后用一个时钟来检测音乐播放状态。 易友们如果有更好的解决办法,还希望能提出指教。 四、项目打包 对“多媒体教学课件制作软件”最不满意的地方就是竟然不提供打包功能。所以我的《易用课件大师》当然要对打包方式上进行加工再加工了。经过再三考虑,最后提供了三种打包方式: 1、只收集文件到统一目录,不打包。 2、收集文件到统一目录,并将所有资源打包,与可执行文件并存。 3、收集文件到统一目录,并将所有资源集成到可执行文件中,形成单独的可执行文件。 一旦方案确定下来,具体实现其实并不难。代码应该写得比较清楚,大家自己看吧。 西风 2006年10月7日