Builder

2024-07-20

Builder(精选八篇)

Builder 篇1

C++Builder是由Borland公司继Delphi之后又推出的一款高性能可视化集成开发工具。C++Builder具有快速的可视化开发环境:只要简单地把控件 (Component) 拖到窗体 (Form) 上, 定义一下它的属性, 设置一下它的外观, 就可以快速地建立应用程序界面;C++Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性 (包括全面支持ActiveX控件) 的可重用控件;C++Builder具有一个专业C++开发环境所能提供的全部功能:快速、高效、灵活的编译器优化, 逐步连接, CPU透视, 命令行工具等。它实现了可视化的编程环境和功能强大的编程语言 (C++) 的完美结合。

接下来我们就它们做一个比较详细的对比。

首先, 从它们的应用程序框架 (Application Frame, 有时也称为对象框架) 进行比较。Visual C++采用的框架是MFC。MFC不仅仅是人们通常理解的一个类库。 (同样, Delphi和C++Builder使用的VCL的概念也不仅仅是一个控件库。) 你如果选择了MFC, 也就选择了一种程序结构, 一种编程风格。MFC早在Windows 3.x的时代就出现了, 那时的Visual C++还是16位的。经过这些年的不断补充和完善, MFC已经十分成熟。但由于原型出现得比较早, MFC相比于VCL落后了一个时代。尽管微软对MFC的更新没有停止, 我也经常读到持“只要Windows不过时, MFC就不会过时”之类观点的文章, 但就像Inprise (原Borland) 的OWL框架的淡出一样, MFC的淡出也是早晚的事。如果MFC青春永驻, 微软的开发人员也不会"私自"开发出基于ATL的WTL呀。我以为, 最能体现一个应用程序框架的先进性的是它的委托模型, 即对Windows消息的封装机制。最自然的封装方式是采用虚成员函数。如果要响应某个消息就重载相应的虚函数。但出乎我的意料, MFC采用的是"古老"的宏定义方法。用宏定义方法的好处是省去了虚函数VTable的系统开销。不过带来的缺点就是映射不太直观。好在较新版本VC带的ClassWizard可以自动生成消息映射代码, 使用起来还是比较方便的。但和VCL的委托模型相比, MFC的映射方法就显得太落后了。而C++Builder对C++语言进行了扩展, 以便引入组件、事件处理、属性等新特性。由于功夫做在编译器级, 生成的源代码就显得十分简洁。但是由于扩展的非标准特性, 使用VCL的C++Builder的源代码无法被其它编译器编译。而MFC的功夫做在源代码级, 虽然消息映射代码较为复杂且不直观, 但兼容性非常好。只要你有MFC库的源代码, 你的MFC程序理论上用任何符合ANSI标准的编译器均可编译通过。C++Builder 3以上版本可以原封不动直接编译Visual C++程序, 很多人认为这是C++Builder的兼容性好, 实际上很大程度应归功于MFC的兼容性好。微软辛辛苦苦用标准方法写MFC, 却为对手制造了方便。不知他们作何感想?而因为C++Builder对语言作了扩展, VC不能编译C++Builder的程序。看来在这方面VC要输给C++Builder了。而且VCL所支持的组件、属性等都是MFC所缺乏的特性。虽然VC也能支持组件, 但要通过App Wizard先生成一个“包裹”类 (wrapper) , 不如VCL来得简洁。有很多人使用C++Builder就是冲着控件板上那一大堆组件来的, VC虽然能使用的组件也很多 (也许不比C++Builder少) , 但由于不方便而对RAD程序员没有吸引力。

C++Builder的VCL比Visual C++的MFC先进的另一个特性是异常处理。

再从它们的易用性比较。VC有Class Wizard、Source Browser等一系列工具, 还附带Visual Source Safe、Visual Modeler等强大的工具, 易用性非常好。 (VC自带建模工具Visual Modeler, 也许说明了它才是工程级的开发平台, 与C++Builder的定位不同。) 它所带的MSDN这部"开发者的百科全书"更是让你"没有找不到的, 只有想不到的"。而且它的AutoComplete之类小功能也比C++Builder要体贴。C++Builder的新版本虽然也提供了这一功能, 但它的提示要等好几秒才出来, 有时你不经意间把鼠标停在某一处, 也要等硬盘响好几秒, 这可是在566Mhz的赛扬II上呀。不要笑我琐碎, 有时一个开发工具的成熟和易用, 就是从这些小地方体现出来的。C++Builder作为RAD工具, 理应强调易用性。但与VC相比还显出不成熟。这是不应该的。

再来看看它们的可移植性。用VCL构架编写的Windows程序向Linux移植成为可能。但这只是可能。因为在目前Inprise的兼容性工作做得并不好。C++Builder可以编译VC程序还要多谢微软使用标准方法写MFC, 而它自己各个版本之间兼容性却不太好。低版本的C++Builder不能使用高版本的VCL组件, 而高版本的C++Builder竟然不能使用低版本的VCL组件。真是岂有此理, 我很少看见软件有不向下兼容的。如果Windows98不能运行95的程序, Windows 95不能运行3.x的程序, Win 3.x不能运行DOS程序, 你还会用Windows吗?如果不是C++Builder的其它某些方面太出色, 光是这个向下不兼容就足以让我抛弃它。而且虽说通过捆绑编译器, C++Builder可以编译Delphi的Object Pascal代码, 但C++Builder仍不能使用为Delphi开发的VCL组件。所以一个组件有for D1/D2/D3/D4/D5/C1/C3/C4/C5这些不同版本是常有的事, 而且随着C++Builder版本的升级可能还会增加。希望Inprise能先解决同门兄弟的兼容性问题。而微软的VC就没有这类问题。MFC1.0的程序也可以毫无障碍地在VC6.0下编译通过。

参考文献

[1]林锐.高质量C++/C编程指南[M].北京:电子工业出版社, 2005.

[2]余祖龙, 孙开琼.面向对象程序设计与VC程序设计入门[M].北京:北京航空航天大学, 2008.

Builder 篇2

指导教师:伍宗富

实验一 DSP Builder设计应用 实验学时:4学时 实验类型:综合 实验要求:必做

一、实验目的

1.掌握DSP Builder设计应用的方法。2.掌握FIR滤波器的设计步骤。

3.掌握MATLAB、DSP Builder、Quartus II的综合应用。

二、实验原理

1.4阶FIR滤波器子系统设计

] 为了便于调用子系统模块的更高级系统进行SignalCompile分析,必须对生成的子系统模块的“Mask type”进行设置。

使用“Mask Subsystem…”中的“Documentation”设置“Mask type”为“SubSystem AlteraBlockSet”就可以利用SignalCompiler正确地生成VHDL代码

2.直接I型16阶FIR数字滤波器设计 SignalCompiler 16个常数端口设置滤波器的系数,可根据具体要求进行计算而确定。3.使用MATLAB的滤波器设计工具,获得滤波器系数。(1打开Matlab的FDATool “start”->“ToolBoxes”->“Filter Design”-> FDATool

(2选择Design Filter 设计滤波器(阶级选N-1=16-1=15(3滤波器分析(查看其幅频特性曲线(4导出滤波器系数(File-> Export…

注:在Matlab主窗口的命令窗口中键入变量名并乘量级数转换fir16_data*(2^8会显示数据,如FIR滤波器模型使用还需转为整数round(fir16_data*(2^8。将显示数据记录并输入上面 16个常数端口完成设置滤波器的系数

4.Quartus工程实现

5.扫频模块设计(产生实验用输入信号

Adder Subtractor2 D ecrem ent3 注:仿真时将位值改小点,仿真后再改回来

Adder Subtractor2 Decrement3 6.FIR滤波器仿真(滤波器系数改变,则滤波器性能发生变化。

三、实验内容

设计一个16阶的低通FIR滤波器,对模拟信号的采样频率Fs为48KHz,要求信号的截止频率为Fc=10.8KHz,输入序列为宽为9位(最高位为符号位。

四、实验步骤

1.使用DSP Builder完成4阶FIR滤波器子系统模型设计。2.使用DSP Builder完成直接I型16阶FIR数字滤波器模型设计。3.使用MATLAB的滤波器设计工具,获得滤波器系数。

4.在DSP Builder中修改直接I型16阶FIR数字滤波器模型滤波系数,并将其转换为Quartus工程文件。

5.使用Quartus完成FIR滤波器工程设计调试。

五、实验组织运行要求

本实验利用DSP Builder、MATLAB、Quartus设计一个FIR滤波器,实验程序并不是很复杂,为了提高学生独立设计的能力,应采用以学生自主训练为主的开放模式组织教学,然后在指导老师的监督下,由学生自己动手,按实验要求完成任务,最后由指导老师检查实验结果后方可离开。

(1画出系统的原理框图,说明系统中各主要组成部分的功能。(2熟悉各个VHDL源程序。(5记录系统仿真、硬件验证结果。

(6记录实验过程中出现的问题及解决办法。

六、实验条件 1.计算机一台;2.DSP Builder、MATLAB、Quartus开发工具软件;3.SOPC开发板。

七、实验注意事项

1.做实验项目要建立工程文件夹,且为英文路径和名称。2.学生必须严格按实验操作规程进行实验,要用U盘保存数据。3.使用实验开发板进行硬件验证时,必须爱护实验开发装置。

八、思考题

1.如何设计其它类型的滤波器,如16阶带通、高通、带阻的FIR滤波器? 2.如何在MATLAB中使用DSP Builder完成FIR滤波器仿真?

九、实验报告要求

实验结束后,学生应根据做实验情况,认真完成实验报告的书写。实验报告应包括实验目的、实验内容、仪器设备、实验原理或电路、源程序清单、实验步骤、实验结果及分析和实验过程中出现的问题及解决方法等。

Builder 篇3

Character Builder是世界领先的动画人物创建工具。它包含了大量卡通和真人动画模板, 每个角色内置很多丰富的动作和表情 (如图1) 。只需要通过点击和简单设置你就可以创建出各种生动的Flash动画人物和场景。Character Builder还能够利用微软的TTS引擎, 实时将文本朗读出来, 实现完美的中英文发音, 同时, 可控制人物眼神、口形、肢体动作和声音的同步, 使课件更加生动。Character Builder制作的动画可以和Articulate, OutStart Trainer, Composica等e-learning课件制作工具集成, 也可以以html、flash、视频等格式发布, 然后集成到Authorware、Powerpoint、Captivate、网页等课件制作平台。

运行Character Builder后, 选择File菜单下的New Project命令, 将弹出如图2所示的界面。Character Builder提供了多种不同的项目类型:Empty Project空白项目, Message消息, Slideshow幻灯片, Interaction交互, Dialog对话, Narration陈述, Web Applet网络小程序。Message类型可以让人物说出一小段提示信息;SlideShow类型的项目, 可以根据已有的ppt文件, 加入人物的动画。Dialog则是在画面上加入了两个人物, 通过两个人物对话的形式完成课件;Narration是在已有的.swf文件基础上添加任务动画;Web Applet可以将人物加在网页当中。

下面, 笔者分别以Message和Interaction两种模式介绍Character Builder的使用。

一、演讲动画

Message是课件制作中使用较多的一种类型, 主要实现文本内容的介绍, 可以用在知识点的讲解或者总结上。在图2的窗口中, 选择Message类型, 点击“下一步”按钮, 在弹出的对话框中选择呈现的方式。这几种显示方式都给出了相对应的缩略图, 大家可以根据缩略图所呈现的效果选择合适的类型。这里我们选择“Simple Message”类型, 继续点击“下一步”按钮, 现在出现了角色选择对话框, 其中, 标星号的表示需要下载, 选择合适的动画角色后, 按“下一步”按钮。接着弹出的对话框主要用于添加两种类型的显示元件:气泡和静音按钮, 选择你需要的元件, 按“下一步”按钮, 单击“完成”按钮, 此时人物就出现在舞台中央了 (如图3) 。

接着将自动弹出“Add Script”添加脚本窗口, 这个窗口用于设置卡通形象需要朗读的文本, 朗读的文本来源主要有两种:Message from text (直接给出需要朗读的文字) 和Message from audio file (根据已有的声音文件) , 这里我们选择Message from text, 按“下一步”按钮, 输入需要卡通形象朗读的文本。可以输入英语内容, 也可以输入中文等其它语言, 前提条件是要安装相应的语音库。中文的语音库可以到www.cppblog.com/fly931/articles/Download.html下载。英文语音库可到www.aieln com/thread-2622-1-1.html下载。输入文本以后, 按“下一步”和“完成”按钮, 完成朗读文本的设置。

目前, 英文的tts技术发展较为成熟, 如果你需要朗读的是英文, 基本能够实现流畅朗读, 中文tts技术发展稍微缓慢一些, 不是每个人都能够接受中文语音库的朗读效果。对于中文, 建议大家选择“Message from audio file”, 根据已有的录音文件实现人物动画。

Character Builder中主界面提供了四种视图模式:Outline, Design, Script, Preview, 点击Preview就可以预览效果了。下面我们需要给卡通人物添加一些动作, 让人物更加活泼些。点击Script视图, 出现如图4所示的画面, 这里可以对朗读的文本进行修改, 还可以添加相应的动作。比如:我们让角色在说hello的时候会动手臂, 在说our的时候做出一个双手往内的动作。可以先将光标放在Hello的前面, 然后选择工具栏上的相应动作, 再次点击Preview按钮预览效果。

如果人物的声音和形象不一致, 比如明明是一个女性角色, 但是说出的是男性的声音。可以在Outline模式中修改, 单击Outline进入设置窗口, 接着选择列表中的卡通形象, 本例中是“Dianne” (如图5) , 再在下面的属性面板中, 将TTS Voice修改为男性的声音就可以了。

二、互动反馈动画

我们来制作一个具备交互判断功能的人物动画。新建一个Interaction类型的项目文件, 按“下一步”按钮, 选择交互的类型为“Basic Quiz基础测试”, 按“下一步”按钮选择人物形象, 点击“完成”按钮。

在弹出的“添加幻灯片”窗口中 (如图6) , 选择幻灯片的类型为“Multiple choice slide”多项选择题, 按“下一步”按钮, 设置题目和答案, 并设置正确的答案。按“下一步”按钮, 设置回答正确和回答错误的反馈, 按“下一步”按钮, 点击“完成”。

测试一下动画效果吧, 如果需要制作多个选择题, 可以回到Outline视图, 右击列表中的“Slideshow 1”, 在快捷菜单中选择“Add slide”命令, 添加一张新的幻灯片。既然是测试, 我们还需要统计孩子的得分情况。在“Outline”视图或者“Design”视图中, 点击工具栏上的“Add”按钮, 增加一张“Quiz score slide”得分幻灯片, 这张幻灯片中包含了“答对数”、“完成数”和“总数”三个文本标签, 每个标签的后面跟了一个空白的文本域, 当你选中每个空白文本域时, 在下面的属性面板中可以看到对应的变量。本例中, 我们使用的是内置的TotalScore, TotalCompleted, 和TotalQuestions三个变量。这三个变量将会在学生操作的时候自动更新。用户不需要做任何编程处理。

如果你点击“Script”按钮, 可以看到这张幻灯片中自动加入了四行脚本, 这四行脚本将根据学生的得分自动呈现, 比如:当满足条件“TotalScore==TotalQuestions”也就是全对的时候, 说“祝贺你, 很完美。”当满足条件“TotalScore<TotalQuestions/2”也就是答对小于一半时, 说“不大好”, 所有的这些工作, 都由系统自动完成。

三、输出与整合

Character Builder制作的动画可以发布为html5、Flash、视频等格式, 然后集成到Authorware、PowerPoint、Captivate、网页等课件制作平台。

选择工具栏上的Render按钮, 将生成Flash动画, 按Run按钮可以观看效果, 按Output按钮打开生成文件所在的目录。如果需要生成视频文件, 首先打开Outline视图, 然后选择列表中的Project, 在下面的属性面板中设置Output Type类型为Video, 设置Format为MP4或者mov等等。

Character Builder的功能还不止这些, 在Character Server的配合下, 我们还可以打造自动回答系统, 利用人工智能技术, 用户可以和这些卡通人物聊天, 类似于苹果的siri。可以预见, 在将卡通形象引入到课件中以后, 大大增强了课件的活泼性, 必将得到学生们的喜爱。

摘要:如何让动画具有吸引力, 激发学生的学习兴趣, 可以在制作课件时借助卡通形象, 使学生看到的动画人物更活泼, 并且能够针对用户的交互做出动作反馈, 使用Character Builder可以很好地解决这一问题。

Builder 篇4

我们经常看到很多图像的特效显示, 比如许多软件的欢迎界面中图片的动画特技。那么图像特效的实质是什么呢?其实质就是按照某种规则, 将图像的各部分以某种次序分别显示, 直到图像全部显示。本文通过C++Builder实现了一个图像特效显示的程序。

1 C++Builder相关知识

1.1 TCanvas对象

作为与绘图和位图操作相关的一个重要对象, TCanvas为作图对象提供了一个抽象的画布。通过TCanvas对象, 我们可以轻松地在画布上绘制图形以及显示、拷贝位图。

(1) TCanvas的重要属性。Handle:WindowsGDI句柄, 访问这个属性相当于执行了GetDC () 函数。

Pixels:这是一个Color类型的二维数组, 用来描述画布上每个像素的颜色指。

(2) TCanvas的重要方法。CopyRect:该方法的作用是从源画布对象上复制部分图片到目标画布。它的原型是:

void_fastcall CopyRect (const TRect&Dest, TCanvas*Canvas, const TRect&Source) ;

其中Dest表示目标画布上将接受复制图像的矩形区域, Canvas表示源画布, Source表示源画布上要复制的图像区域。

Draw:该方法在画布给定的像素点坐标处画出Graphic所给出的画像。其原型是:

void_fastcall Draw (int X, int Y, TGraphic*Graphic) ;

1.2 BitBlt函数

函数功能:该函数对指定的设备环境区域中的图像进行位块 (bit_block) 转换, 以传送到目标设备环境。函数源型:BOOL BitBlt (HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeig ht, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwROP) ;参数说明:

hdcDest:指向目标设备环境的句柄。

nXDest:指定目标矩形区域左上角的X轴逻辑坐标。

nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。

nWidth:指定目标矩形区域的逻辑宽度。

nHeight:指定目标矩形区域的逻辑高度。

hdcSrc:指向源设备环境句柄。

nXSrc:指定源矩形区域左上角的X轴逻辑坐标。

nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。

dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据, 如何与目标矩形区域的颜色数据组合以完成最后的颜色。

函数的返回值:如果函数成功, 那么返回值非零;如果函数失败, 则返回值为零。

2 图像特效的实现

图像的特效包括多种, 常见的动态效果有幻灯片切换效果、百叶窗效果、扩散效果等等, 接下来, 我们将详细的介绍一些常见的图像特效在C++Builder中的实现过程。

首先, 在头文件中定义变量:

在窗体上放置一个TImage组件Image1, 用来显示变换前的位图。再放置一个TPaintBox组件PaintBox1, 用来显示变换后的位图。

图象变量的初始化:

在完成如上的定义后, 就可以开始图像的各种特效显示了。

(1) 图像从左到右移入

通过循环, 程序实现了将Image1中的图像从最右边开始一部分一部分地复制到bmp中, 从而在视觉上造成了从左到右慢慢把图像移入的效果。同理, 要实现图像从右到左移入的效果, 只需将Image1中的图像从最左边开始一部分一部分地复制到bmp中即可。而图像从上到下移入或是从下到上移入也是同样道理, 只要把Image1->Width换成Image1->Height。

(2) 图像从上下到中间汇合

以上代码在循环中把Image1中的图像分作上下2部分, 每一部分又一步步地显示出来, 从而实现了图像从上下到中间的汇合。而把上述代码中的Image1->Width换成Image1->Height, 就实现了图像从左右到中间汇合的效果。

(3) 横向百叶窗

(4) 图像颠倒

以上是几种比较具有代表性的图像特效, 在复制图像的过程中, 分别用到了TCanvas的CopyRect方法和BitBlt函数, 不同的是在使用CopyRect方法时, 需要指定源画布和目标画布的长和宽, 而对于BitBlt函数, 由于BitBlt为等比例复制, 所以不需要再次指定长宽。

3 部分源代码

一些其他图像特效的代码如下:

3.1 浓雾效果

3.2 堆积效果

在每一次循环中, Image1中左上角坐标为 (0, i Height-20) 、右下角坐标为 (Image1->Width, i Height) 的部分图像都被复制到目标画布中对应于 (0, iHeight-20, Image1->Width, i) 的一小块区域中, 随着i不断变大 (i Height同时在减小) , 目标画布中的这一小块区域的高度也不断增高, 从而形成了堆积的效果, 当i=iHeight时, 图像就“堆积”完毕了。

4 结束语

本文通过分析一些常见的图像显示效果, 详细介绍了TCanvas对象和BitBlt函数的功能和用法, 并给出了相应的BCB完整源代码。读者可在本文所介绍的方法的基础上加以改进, 从而得到更加专业的符合自己需求的图像特效。

程序开发环境为Windows XP+C++Builder6, 在Windows XP编译通过, 在Windows XP/2000中测试良好。

摘要:通过分析一些图像的显示效果, 详细介绍了如何用C++Builder实现图像的多种特效显示, 并给出了相应的综合实例。

关键词:C++Builder,图像,TCanvas对象,BitBlt

参考文献

Builder 篇5

随着计算机应用越来越深入到人们的工作与生活中, 人们利用计算机要处理的文件种类也变得纷繁复杂, 如果要频繁地对不同的文件进行操作, 就需要操作者不停地打开或关闭各种文件控件, 这给操作人员带来了很多不必要的麻烦。例如图片格式的软件只能打开图片类型的文件, 文本文档格式的软件只能打开文本文件, 这就需要有一种集成的软件来同时具备这些功能。

本文介绍了在C++Builder平台下设计的一种软件, 通过操作人员简单地拖动文件, 它就可打开多种类型的文件, 避免了操作人员不停地寻找各种文件所对应的软件, 反复地对这些软件进行打开关闭, 为操作人员的工作带来了方便。

1 功能简介

本应用程序在未运行时, 操作者可以把要打开的文件直接拖放到指定的图标中, 根据程序获得所拖放文件的路径, 实现对文本文档、图片文件、PDF格式文件以及Word文档的浏览, 像Windows平台下的一些快捷方式图标一样, 可以直接拖放相应的文件。

当应用程序运行时, 操作者可以将要打开的文件拖放到所打开的应用程序窗口中, 通过API函数和消息映射来分别向系统注册本程序可以拖放文件和捕获文件拖放的消息, 这样也实现了对文本文档、图片文件、PDF格式文件以及Word文档的浏览。

2 具体实现方法

本软件在实现过程中, 主要从以下两个方面进行考虑。根据用户需求, 当程序未运行时, 将相应的文件拖放至小图标中, 使程序读取所拖放文件的路径, 根据不同类型的文件在程序中选择相应的控件, 将其打开;在程序运行时, 通过消息映射机制来获取文件路径, 判断文件的类型, 选择相应的打开方式打开。

2.1 应用程序未运行

(1) 获取所拖放文件的名字和路径。熟悉C编程的人都知道main函数带有2个参数:argc和argv, 完整的main函数定义是:int main (int argc, char*argv[]) 。在程序未运行时, 所拖放的文件在植入应用程序的快捷方式中时, 系统会自动调用_argv[1]这样的命令行参数来获取拖放文件的详细路径, 为下一步文件类型判断做准备工作。

(2) 判断文件类型。在获取路径后通过文件类型的判断函数来确定打开的是哪一种文件, 由程序中不同控件来打开文件。通过函数ExtractFileExt () 提取出完整文件名的后缀名, 利用函数Extension.LowerCase () 将文件名称统一设置为小写格式, 以便于与程序中所对应的控件进行比较。最后调用类型判断函数来实现, 代码如下:

这样, 在程序未运行时对多种文件进行拖放操作, 利用各自所对应的控件打开相应的文件, 实现了一个软件多种用途的功能。

2.2 应用程序运行

(1) 利用API函数DragAcceptFiles () 向系统注册本程序可以接收拖放的文件, 在C++Builder集成开发环境中, 通过主窗口菜单中File|New Application建立新的应用程序, 将工程中的文件保存在准备存放的目录中。

函数DragAcceptFiles () 的原型是:

其中参数hWnd定义了接收拖放文件窗口的句柄。参数fAccept将决定此窗体是否接收拖放的文件。如果其值为ture, 则hWnd标识的窗体将不再接收拖放的文件, 或为false, 则窗体可再接收拖放的文件。在程序向系统注册了接收拖放文件后, 如果发生文件的拖放, 系统将向对应的窗体发送WM_DRO PFILES消息。所以, 在头文件中添加对应的消息映射, 同时声明处理WM_DROPFILES消息的成员函数DropFiles () 。

(2) 利用消息映射捕获文件拖放消息WM_DROPFILES, 并对消息进行处理。利用消息映射来获取文件的名称, 通过提取文件路径及完整名称, 将文件名格式进行统一化操作, 代码如下:

上述代码在程序运行时, 对不同文件进行设置并根据文件拖放消息来获取被拖放的文件名。

(3) 判断文件类型。由于应用程序中设置了多种文件的控件, 所以需要判断所拖放文件的类型, 通过定义函数ly (AnsiString&FileName, AnsiString&Extension) , 将文件路径和文件的扩展名传递过来进行判断。在这里, 由于事先已设置好可接收的几种文件类型, 故将所获取的被拖放文件类型与已设置的文件类型进行匹配, 其主要的判断函数代码如下。

上述代码实现的是PDF文件格式的拖放。由于其他格式的文件尚未打开, 故将其他控件的属性设置为假即可。在此判断函数中, 由于放置了4种控件, 分4种情况来进行考虑。若符合其中某一种文件格式, 则将其控件属性设置为真, 其他的则设置为假。

3 实验结果

在可视化的窗口上, 放置了TrichEdit, TAcroPDF, Timage, ToleContainer等组件, 用来在同一窗口中打开这4种类型的文件。其主窗口如图1所示。

在此文件拖放界面中, 放置了4种文件格式的控件, 当程序运行时, 仅有符合拖放文件格式的控件执行, 图中的其他控件都是不可见的, 从而使各种文件控件有序地工作。以PDF格式的文件打开为例来进行说明。当程序未运行时, 拖放文件的效果如图2、图3所示。当程序运行时, 拖放文件的效果如图4所示。

4 结束语

本文所描述的文件拖放应用程序, 方便了操作人员的使用, 该程序可以识别以txt、cpp、bpr、pdf、bmp、doc为后缀名的文件;同时本程序还具有可扩展性, 可以在其中添加常用的文件, 使本软件功能更加强大, 业务类型更为完善。在当今社会多元化发展的同时, 也需要利用有价值的、多元化的软件来满足用户的需求, 为用户的工作、学习、生活带来了极大的便利。

摘要:开发了一种在C++ Builder平台下将多种控件集成在同一应用程序中的软件, 该软件可以通过拖放来打开各种文件, 简化了文件操作, 且可以方便地增加新的文件类型。该程序可识别txt、cpp、bpr、dpf、bmp、doc为后缀名的文件;还具有可扩展性, 在其中添加常用的文件, 功能将更强大。

关键词:C++ Builder,集成,拖放,控件

参考文献

[1]余明兴, 吴明哲, 黄世阳, 等.Borland C++Builder6程序设计经典[M].北京:科学出版社, 2004.

[2]李幼仪, 甘志.C++Builder高级应用开发指南[M].北京:清华大学出版社, 2002.

[3]蒋金弟, 朱永辉, 毛培法.C++Builder中如何拦截Windows消息[J].计算机与现代化, 2001 (3) .

[4]任常锐, 黎涛.C++Builder高级编程[M].北京:机械工业出版社, 2000.

[5]李丽萍.一个基于C++Builder和ADO技术的应用程序[J].辽宁工学院学报, 2002 (2) .

[6]王有一.怎样包装C++Builder应用程序[J].计算机时代, 2002 (3) .

Builder 篇6

关键词:C++Builder,OLE,PPT,调用,研究

C++Builder 6.0是Inprise公司推出的基于C++语言的可视化开发环境, 不仅具有新颖的可视化设计工具, 还配有数据库引擎, 可以通过SQL连接或ODBC访问多种数据库, 并具有开发基于Client/Server模式的数据库应用程序的能力。OLE (对象的连接和嵌入) 是微软公司提出的标准, 它提供了一种用源于不同应用程序的信息创建复合文档的强有力方法。在实现计算机考试的电子化、自动化的要求下, 对Office中word, exel和powerpoint文件的评分自动化控制已经非常重要。其中, 对于word, exel文件的评分自动化有不少相关的论文资料, 但是对powerpoint文件的评分控制, 在文献资料中却较少见到, 经过探索和总结, 现就使用C++Builder6.0中的OLE技术对Powerpoint2000 (下面简称PPT) 的两种调用和自动化控制方法进行讨论。

1 OLE原理介绍

OLE (对象的连接和嵌入) 技术用任何支持自动化编程工具或者宏语言都可以进行访问, 比如Visual Basic、Delphi、C++Builder、Visual C++等。即使脚本语言, 比如VBScript和J scrip也支持自动化。每个人都可以根据自己的情况选择一个编程工具, 我们这里使用C++Builder6.0。Office所有文件编辑过程及结果都被记录在文件中.如格式、符号、样式等都是通过文件的对象和属性保存的。通过OLE自动化技术。可以直接得到这些对象和属性的值, 从而获知考生的操作情况。

2 使用OLE技术调用PPT的两种方法

2.1 第一种是使用CreatOleObject函数来启动PPT, 产生一个OLE对象

这种方法采用的是OLE Automation的机制。OLE Automation是OLE 2.0规格中的其中一项, 可以让其他的应用程序通过对象的方式来调用这个软件的强大功能。OLE Automation的动作基本上需要有两个角色, 一个是服务端 (OLE Server) , 另一个是控制端 (OLEController) 。OLE Server程序定义了一组属性和命令, 并通过类型描述说明它们的功能, OLE Server程序再通过IDispatch接口输出自己的方法和属性, OLE Controller程序通过这个接口, 就可以调用OLE Server程序的方法。只要软件本身具备有OLE Server的功能, 那么就可以编写OLEController的应用程序来调用软件提供的功能。在C++Builder实现PPT自动化的过程中, 充当OLE Server角色的是PPT, 而充当OLE Controller的就是C++Builder开发的应用程序。

这种方式功能很强大, 能够真正做到完全控制PPT文件, 能够使用PPT的所有属性, 甚至包括自己编写的VBA宏代码。

但是这个方法也有不足之处, 比如没有C++Builder的代码提示, 异常处理需要自己编写。特别是对于没有太多经验的初学者, 不便于调试, 容易出错。需要大量的参考VBA或者MSDN帮助。

通过OLE自动化技术访问PPT时。主要涉及到几个重要的对象Application、Slides、Shapes、Presentations、Selection。可以通过函数OlePropertyGet获取SlideShowWindow对象, 然后逐个分析指定的每张幻灯片的属性 (即要考查的知识点) 或者对幻灯片进行控制。

由于在应用程序中控制PPT的运行, 要调用Create OLEObject () 来创建OLE Automation对象的实例, 而CreateOLEObject () 是在ComObj.hpp中声明的, 所以在程序的开头必须包含ComObj.hpp文件。下面列出主要程序代码。

2.2 第二种方法是通过对组件的控制来实现.

具体就是通过组件Tole Container将PPT嵌入, 然后通过对组件的控制来实现。这种方法最大的优点就是, 调试方便, 能及时得到错误提示或者语法提示帮助。

在C++Builder6.0的Office2k组件页可以直观的看到如下组件:

TPowerPointApplication组件:PPT应用程序组件, 完成对PPT应用程序的调用, 是完成对PPT调用的核心组件。

TPowerPointPresentation组件:演示文稿处理组件, 用于处理演示文稿具体内容。

TPowerPointSlide组件:用于对PPT演示文稿中的某张幻灯片进行处理。

我们仍然将代码都放在一个按钮事件里面, 如下:

3 结束语

上面所介绍的C++Builder中使用OLE技术调用PPT的两种方法, 经测试都运行良好, 使用方便, 功能强大, 充分利用了C++Builder强大的开发数据库软件的功能这里给出的只是其中部分的主要代码。这些代码都是对已经存在的PPT文件的属性进行读取或者控制。更多的自动化控制, 比如PPT文件的创建, 对象的插入及其属性的设定或改变等功能, 还有待在将来的应用中继续研究。

参考文献

[1]李幼仪, 甘志.C++Builder高级应用程序开发指南[M].北京:清华大学出版社, 2002.

[2]陈周造, 陈辉煌.精通C++Builder5程序设计高级教程[M].北京:中国青年出版社, 2001.

[3]莫家庆;盘炜生, C++Builder应用程序与Office2000的集成[J], 福建电脑, 2004

Builder 篇7

1.1 使用Resource DLL Wizard来实现

先按正常的步骤开发一个应用程序。完成后保存并编译,并使该项目处于打开状态。单击File菜单下的New,other,在随后出现的对话框中选中英框架的New,在列表视图中选中“Resource DLL Wizard”,然后单击OK按钮,弹出向导对话框。

在随后的两步中认可默认设置,均按Next按钮,如图1所示的Language列表框中选择相应的语种,然后单击Next按钮,直至结束。

这时C++Builder将自动建立一个DLL项目,该项目包含了所有的表单和一个资源文件。我们可以方便地进行修改,使各项显示信息如表单和控件的Caption与Hint等属性、资源文件中的串表等内容换成相应的语言表示。

将该DLL项目编译,生成一个DLL文件,注意到该文件的文件名默认为初始项目名,扩展名并不是DLL,而是所选定的语种名的缩写,如美国英语为(*.enu),简体中文为(*.cht)。

重复以上工作,制作出我们所需要的各种语言版本的库文件,将所有这些库文件和应用程序一起发布,程序在运行时能自动根据操作系统的语种选取相应的库文件,而使程序表现出相应的语言界面。

1.2 动态多语言之间的切换

在前面的工作中,该程序的语种可以做到与操作系统一致,但有些时候,如有外挂支持其他语种的平台时,我们可能希望应用软件支持与操作系统不同的语种,C++Builder也提供了动态多语种之间的切换功能。其具体实现可根据不同使用要求而有所不同。下面举一个简单的例子,该程序有一个选择语种的菜单,我们要求做到在菜单中选择不同语种时,程序的界面能切换到相应的语种。

为了实现语种切换,我们在编写该应用程序时,在项目中添加一个位于C++Builder安装目录的samples/apps/Rich Edi子目录下的Re Init.pas,在该文件中实现了几个用于动态语种切换的函数,有兴趣的话可以打开该文件了解其具体内容,甚至可以将其改写为C++。然后在需切换语种的表单的代码头中加入一行语句:#include“Re Init.hpp”。

在表单的设计界面中选定的相应的菜单项(如English),进入该菜单项的代码编辑,写入如下代码:

LoaNewEesoturceModule(SUBLANG_ENGLISH_US<<10|LANG_ENGLISH);ReinitiaIizeForms();

在其他语言选择菜单项中也写入类似代码。需要用到某个语种和地区的代码常量时,可以参见C++Builder安装目录的include子目录下winnt.h中相应的常量申明内容。如简体中文的代码为SUBLANG_CHINAESE_SIMPLIFIED<<10 LANG_CHINESE。

做完以上工作并编译该项目,按前述方法生成相应的资料库项目,编辑表单,将菜单项的标题改成相应的语言并生成资料库。将所有的资源库复制到应用程序的目录下,运行程序,选择不同的语言菜单项,注意到程序的界面确实发生了变化。

1.3 可实现动态添加的多语言界面

1.3.1 程序结构

本程序由两个Form和一个DataModule组成。Form1为界面,另设一个Form2进行动态添加语言。本程序中调用了数据库中的表,用到了DataSource和Table控件,将DataSource和Table控件统一放入DataModule中。

1.3.2 多语言用户界面的切换

为了使用户添加语言更为方便,由程序自动完成多语言的切换赋值,可通过一个程序来完成,如下:

Ai为界面中需替换项的Name值,“Data Module1->Table2->Field By Name(“A1”)->As String”为界面表(Table2)中对应的多语言译文。在切换语言时只需调用Replacement(Ansi String d)即可,例如Replacement(English1->Caption)。

本程序中为每一种语言都设计了一个数据表,可将其名字直接以其语种来命名,例如“中文.db”,则进行数据多语言替换时可直接调用,如DataModule1->Table1->TableName=d+“db”;所示。注:“中文.db”此处“中文”即为界面表(Table2)中Language项的语种名,也即界面语言切换项的名字(d)。

1.3.3 动态添加界面多语言

动态添加界面多语言是在Form2中进行,由用户自己直接写入界面表(Table2)中即可,这样用户在Form1中直接调用Table2就可以了,只需在界面语言切换项中添加所增的语言名字,程序段如下:

1.3.4 动态添加数据多语言

动态添加数据多语言是在Form2中进行,将用户写入的新语言的各数据项创建一个新的表,表名以其语种来命名,如上所述。构建新表的程序如下:

那么在Form1中切换语言时,直接调用该语言的数据表就可以了。程序段如下:

2 示例

程序运行后,用户可交互式地选择界面需要的语言,当选择语言为英文时,即出现相应的英文用户界面,如图2所示。选择语言为中文时,切换成相应的中文用户界面,见图3所示。当添加了一种语言时,可直接在界面切换项中显示,选择该项即可实现新添加语言的切换。程序退出时,程序将恢复为系统默认语言设置。

3 结束语

上面介绍的两种方法都实现了多语言用户界面的切换。Resource DLL Wizard是由C++Builder自行提供的方法,使用起来方便,但它却不能实现动态添加功能,语种有限。第2种方法可以动态添加语言,可以很容易地在添加界面中输入相应项的其他语言的译文,并且无须进行重新编译,亦无须编程知识和经验即可实现用户界面多语言和数据多语言。

摘要:利用C++Builder来开发多国语言界面应用程序,用户无须重新编译即可方便快速地实现界面和数据的多语言切换显示。详细介绍了使用C++Builder自行提供的方法及有关控件的两种实现方法,并给出了一个可动态添加多语言的用户界面实例。

关键词:C++Builder编程,用户界面,多国语言

参考文献

[1]李幼仪,甘志.C++Builder高级应用开发指南[M].北京:清华大学出版社,2005.

[2]洪国胜,张建原,洪月里.C++Builder程序设计轻松上手[M].北京:清华大学出版社,2001.

[3]黄河清,李治柱.基于动态数据库的多国语言网站开发[J].计算机工程,2005(2).

Builder 篇8

DDS (Direct Digital Synthesizer) 技术, 即直接数字频率合成技术, 是一种新型的频率合成技术, 其电路系统具有较高的频率分辨率, 可以实现快速的频率切换, 并且在频率改变时能够保持相位的连续, 很容易实现频率、相位和幅度的数控调制。

DDS系统由相位累加器、波形ROM、D/A转换器、低通滤波器四个基本部分构成[1,2], 其基本结构如下图所示:

相位累加器是DDS系统的核心部分, 它由一个N位的加法器和N位的寄存器构成。通过把上一个时钟的累加结果反馈回加法器的输入端实现累加功能。N为相位累加器的字长, K为频率控制字。每经过一个时钟周期, 相位累加器的值递增K。根据DDS基本结构, 若fc为时钟频率, fo为输出频率, 则[3,4]:

DSP Builder是Altera公司推出的一种基于FP-GA的面向DSP系统开发的工具软件, 它是一个系统级设计工具, 架构在Math Works公司的MATLAB/Simulink设计工具和Altera的Quartus II设计工具之上, 把系统级和RTL级两个设计领域的设计工具连接起来, 最大程度的发挥了两种工具的优势。Matlab本身就是功能十分强大的数学分析工具, 在科学计算和工程计算中被广泛应用, 可以进行复杂的数字信号处理的建模、参数估计和性能分析。Simulink是Matlab的一个组成部分, 用于建立图形模块并能对其进行仿真。DSP Builder作为Simulink的一个工具箱, 让用FPGA设计DSP系统完全可以通过Simulink的图形界面进行建模、系统级仿真, 设计模型还可以直接转化成VHDL硬件描述语言, 并自动调用Quartus II、Modelsim等EDA设计软件, 完成综合、网表生成以及器件适配乃至FPGA的配置下载, 使得系统描述与硬件实现有机地融合为一体, 充分体现了现代电子技术自动化开发的特点与优势。

文中提出一种利用DSP Builder来设计DDS数字系统的方法, 并经硬件下载产生范围为1~18MHz数字可调高精度的DDS信号。

1 DDS系统模型设计

根据DDS原理建立DDS系统模型, 如图2所示。

其中相位累加器由Parallel Adder Subtractor模块、Phaseword1模块和Delay模块构成构成。Delay模块的作用是让输入Freqword等待一个时钟周期后, 与反馈回来的相位字进行累加后送到加法器模块 (Parallel Adder Subtractor) , 达到相位累加的效果。而加法器模块使用“Pipeline” (流水线) , 其中已经包含了寄存器, 因而从加法器出来后就不需要延时模块。相位调整部分由Parallel Adder Subtractor1模块和Bus conversion2模块完成。幅度控制部分由Product模块和Bus conversion1模块构成。LUT模块为查找表, 该模块中的参数“MATLAB Array”可根据需要输入改变, 从而完成相应波形的输出。

此DDS数字系统的三个输入分别为Phaseword (相位控制字输入) , Freqword (频率控制字输入) 和Ampword (幅度控制字输入) ;四个输出分别为:DDS_OUT1为相位累加器的相位调整前的输出波形, DDS_OUT2为相位调整后的输出波形, DDS_OUT3为幅度控制前的目标波形, DDS_OUT4为幅度控制后的目标波形。

受存储器容量限制, 查找表模块LUT容量有限, 此处设置为10位。为获得较高的频率分辨率, DDS模块的频率控制字Freqword设置为32位, 即相位累加器字长为32位, 在对相位累加结果作截尾处理 (保留高10位) 后, DDS将获得的频率分辨率, 其中fc为系统工作频率;DDS的相位控制字Phaseword设置为32位, 则相位分辨率为

2 Simulink中的仿真分析

首先进行参数设置:在模型窗口中点击“Simulation”菜单, 在下拉菜单中选择“Configuration Parameters”, 设置“Start time”为“0”, “Stop time”为“1000”;“Solver options”中设置“Type”为“Fixed-step”, “Solver”为“discrete (no continuous states) ”, “Fixed-step size”为“1”, 其它选项使用默认设置。模型中Phaseword (相位控制字输入) 、Freqword (频率控制字输入) 和Ampword (幅度控制字输入) 对应的constant (输入) 分别取300、9000000和255。查找表模块LUT的“MATLAB Array”设置为“8191*sin ([0:2*pi/ (2^10) :2*pi]) +8192”, 即正弦波。设置完所有的模块后, 仿真得到正弦波的输出波形如图3所示。图3中的波形输出从上到下四个波形, DDS_OUT4 (想要得到的最终波形) 。比较DDS_OUT1和DDS_OUT2可以发现当t=0时, DDS_OUT1的输出为0, 而DDS_OUT2的输出为300 (等于相位控制字的输入) , 产生了相移, 与预期目标相符合。DDS_OUT3的幅度为16384, 通过幅度调整得到如DDS_OUT4幅度为255的正弦输出, 实现了幅度调整/控制。通过波形计算可得周期为12us左右, 与理论值11.9us基本一致。

3 DDS系统的硬件实现

使用Signal Compiler模块将图2所设计的系统转化成VHDL代码后, 包装成一个模块。为正确下载此系统到FPGA芯片中, 搭建顶层测试模块原理图, 如图4所示。

其中将40M的有源晶振信号作为倍频模块的输入, 倍频输出80M的信号分别送入到divclk模块、dds_GN模块、lcd_anjian模块, 而divclk模块、lcd_anjian模块输出相位控制字、幅度控制字、频率控制字送入到dds_GN模块, 最后dds_GN根据输入的控制字控制输出相应的波形。经硬件下载到自制FPGA开发电路系统, 实测波形数据如表1。

由表1可知, 测得波形频率范围从1 Hz~18M Hz, 实际测试值和理论值较接近的, 误差都在0.2%以内, 具有较高的精度, 基本达到了设计要求。

4 结语

本设计则利用Quartus II和Matlab/Simulink的DSP Builder来完成大范围高精度的DDS数字系统的设计。利用DSP Builder来设计DDS数字系统比通用方法简单, 要求也较低、设计灵活。通过修改查找表LUT中的数据和控制参数, 即可产生多种波形。本设计可为设计DDS数字系统提供参考。

参考文献

[1]郭军朝, 王森章.一种高速低功耗直接数字频率合成器的设计与实现[J].微电子学, 2004, 34 (5) :572-574.

[2]高琴.基于FPGA的DDS信号源设计与实现[J].西安工程科技学院学报, 2006, 20 (2) :210-214.

[3]潘松, 黄继业, 王国栋.现代DSP技术[M].西安电子科技大学出版社, 2003.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【Builder】相关文章:

C++ builder 的文件读写操作总结08-03

用C++Builder6实现CDT循环规约的方法01-11

上一篇:儿童自卑形成原因分析下一篇:神经病学

本站热搜

    相关推荐