2024年5月28日发(作者:)

(完整)基于Flash页面显示的VC++编程实现

(完整)基于Flash页面显示的VC++编程实现

编辑整理:

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们

对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)基于Flash页面显示

的VC++编程实现)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和

反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以

下为(完整)基于Flash页面显示的VC++编程实现的全部内容。

(完整)基于Flash页面显示的VC++编程实现

基于Flash页面显示的VC++编程实现

宋克章

摘要:在使用VC++进行软件开发过程中,为了向用户提供美观实用的界面,提出了VC++内

嵌Flash的设计方案;因为VC++拥有强大的数据处理功能,而其程序界面设计不如Flash

丰富多彩;该方案能有效避开了相互的不足,发挥两者的优点。通过使用VC++环境提供

的ActiveX控件swflash。ocx,来实现VC++程序中内嵌Flash页面.本文详细介绍了使用

此种技术的实现方法,特别是在Flash页面动画和VC++程序间数据传送的交互性上,有独

到的创新性;并着重介绍了Flash页面动态控制原理及软件算法实现。在数据监控软件项

目中实现了该方案,且已在卫星测控数据监控设备中得到实用。VC++内嵌Flash方案很好

地体现了设计的目的,能为类似开发提供实用价值。

关键词:Flash动画;VC++;动态性;交互性;

The Realization of VC++ Programming Based Flash Interface

SONG Ke—zhang

Abstract: In course of project—programming with VC++,in order to provide

good-looking inrerface we introduces a new method which programme

with VC++ and Flash。Because the VC++ software has powerful data

processing function ,but its interface is less beautiful than Flash,

so this method can enhance each other’s strongpoint. We can

program VC++ with Flash interface by using

swflash。ocx

of ActiveX。

This paper detailedly introduce how to realize this method ,

especially the innovation of the Dynamic principle and Mutuality

between VC++ and Flash,and how to control Flash pages. We did

realize this project in the data monitoring—and-controling

software and now the software is using in satellites monitoring

method satisfied ours aim well and give an good example

for some project like this.

Key words: Flash Animation; VC++; Dynamic; Mutuality;

1、

引言

Flash使动画制作变的异乎寻常的快捷、方便.参见[1]。由于 Flash制作的动画在

层次、内容、表现形式等诸多方面均比较出色 ,在网络上得到迅猛的发展,在普通的应用

程序中也可以借助 Flash实现一些VC++ 6。0编程语言所难以实现的特效。正是基于这

种思想,用Flash动画页面来内嵌VC++ 6。0的程序界面中,使程序界面的友好性大为提

升。参见[2]。

本文所说的基于Flash页面显示,是VC编程实现的多表单视图页,在每个视图中使用

基于Flash动画显示的页面;这只是具体的形式,核心的思想就是Flash页面动画和

VC++程序的数据传送的交互性实现;理解了这一层,就能创造出其他各种各样风格的界面

来。VC++ 6.0是功能强大的编程语言,Flash在矢量动画制作的佼佼者。二者结合,可以

解决诸如界面等各方面的许多设计实现困难,得到意想不到的效果。参见[3]。本文主要

就是介绍在VC++ 6。0程序编写和FLASH动画制作中的几个关键技术;通过对这些技术的

阐述,使读者更能掌握和理解其精髓。

2、

测控数据监控软件开发

卫星测控数据监控软件随着我国的航天事业的蓬勃发展,也逐渐走出国门,为国际客

户服务;这就要求我们的卫星测控数据监控软件不仅功能强大,界面也应美观活泼;所以

界面设计变得相当重要。通过查阅资料发现,在有关VC++的程序使用Flash动画的文献

都存在很大的局限,Flash动画仅能显示一些信息,不能接受用户的操作,缺乏交互性。

(完整)基于Flash页面显示的VC++编程实现

参见[4]。在进行交互性设计中,我们不仅能通过Flash操作数据和文件,还可以控制

VC++程序的行为,这样就大大增加了我们通过VC++的程序使用Flash的意义。在这种设

计架构下,VC++的程序提供程序框架和数据的处理,Flash动画提供数据信息的输入和显

示,两者各有侧重,且之间进行数据交换。图1所示就是实现的软件功能示意图。

在进行交互性功能开发中,对可行性进行试验时,由于在Flash中提供了定义变量的

功能,同时VC++ 6.0的Flash控件又提供了SetVariable和GetVariable函数,这样就

为交互性功能开发的可行性提供了保障。 较容易实现的功能是数据的显示,即从VC++ 6。

0程序到Flash控件的数据传输,在VC++ 6.0程序中使用设置变量函数即可;而反过来

确不太容易,不能简单地使用GetVariable函数就能实现.

本文就以多表单视图的一个表单视图类CPage1View为例进行阐述。生成表单视图类

class CPage1View : public CFormView,在表单资源中插入ActiveX控件中的

Shockwave Flash Object一项;设置此控件的属性ID为IDC_ PAGE1,并为控件生成相应

的类CShockwaveFlash m_swfPage1;在DoDataExchange函数中设置类和控件的关联

DDX_Control(pDX, IDC_PAGE1, m_swfPage1);程序框架和多表单视图生成不是本文讨论

的重点,请读者查找相关资料。

图1 结构系统框图

接下来就是在视图类启动时,加载Flash动画。这样我们就建立了为交互性开发的前

期工作.在视图类的OnInitialUpdate函数中启动Flash动画,代码如下:

m_swfPage1。SetMovie(Flash文件全路径);

m_vie(0, Flash文件全路径);

m_swfPage1。Play();

//让Flash动画充满整个表单视图的用户区

CRect clintRect;

GetClientRect(&clintRect);

if(m_swfPage1。GetSafeHwnd()!=NULL)

m_ndow(0,0, (),

());

SetTimer(1,300,NULL);

在视图类的OnSize函数中也加入类似代码实现Flash画面随窗口调整相应变化.

3、

测控数据监控软件实现

基本的思路确立后,具体的实施可能有多种实现方法。由于VC++程序采用轮询

的方法对Flash动画的变量进行查询,而Flash动画本身也可能在帧间循环运行,

如图2所示两者之间在数据读写上存在时差,所以要考虑两者之间的读写同步问题。

(完整)基于Flash页面显示的VC++编程实现

图2 Flash和VC++的简单逻辑关系

3。1 Flash动画模块

Flash动画开发环境使用Macromedia Flash Professional 8。在进行整个测控

数据监控软件开发中,Flash动画和VC++程序同等重要,所以要求Flash动画开发

者不仅对Flash开发环境要相当熟悉,还要有一定的界面设计水平。参见[5].这

里我们只对功能实现上进行讨论。

在Flash开发环境中有三种文本模式:静态文本、输入文本及动态文本.静态文本

用于固定的标题;动态文本用于显示动态的文本;输入文本可以形成输入框,用于文

本输入,也可以显示初始值;后两种文本模式可以为文本设置变量。输入框、复选框

和按钮是主要的用户信息输入形式.参见[6].复选框在Flash中一般是影片剪辑,

同样可以定义变量与之相对应,复选框由于点击后变量值一直维持,在VC++程序的

定期轮询中,对复选框在VC++程序中对应的变量atoi(m_swfPage1。GetVariable

(复选框在Flash中对应的变量))进行判断即可。按钮是一次触发信息,考虑读写同

步问题一般不用变量进行表示,只有在确定帧停止时才能使用;通常是改变帧的停

留位置实现按钮在Flash动画中的功能。图3所示使用两个图层,在帧控制层中,第

一帧对所定义的变量进行初始化,且每帧动作设置为停止;显示层则是我们所看到

的界面,有文本框、输入框、复选框及按钮等等.对按钮的动作相应设置为帧间跳转

gotoAndStop(按钮对应的帧序号),图3对应2个按钮,每个按钮分别对应第3和4

帧.参见[7].

图3 Flash动画界面开发环境部分截图

3。2 VC++软件模块

此软件模块主要含是基于MFC的表单视图多文档结构。参见[8].CPage1View

的关键在于利用Flash的多帧控制功能,数据的读写接口是Flash中的变量,并控制

帧间的跳转。在CPage1View类中关键的函数是OnTimer(),下面就是定时器函数程

序简介.图4为其流程图。

void CPage1View::OnTimer(UINT nIDEvent)

int CurrentFrame=m_tFrame();

if(CurrentFrame>1)

ReadCommonData();//读取公共数据

if(CurrentFrame==2){

OnButton1();//响应按钮1的函数

m_swfPage1。GotoFrame(1);//挪开此帧到转换停留帧

if(CurrentFrame==3){

OnButton2();//响应按钮2的函数

(完整)基于Flash页面显示的VC++编程实现

m_swfPage1。GotoFrame(1); //挪开此帧到转换停留帧

注意在此CurrentFrame()函数取到的FrameNumber帧计数从0计数,而Flash

中的帧计数是从1计数,所以要清楚它们之间的这种对应关系。另一方面,语句

GotoFrame(1);则是将Flash动画帧设置到第二帧。图3所示的帧控制层的第一帧

称为初始化帧,第二帧称为转换停留帧,其他称为按钮对应帧。

下面一段程序可以用在OnTimer函数中,来实现另外一种按钮功能的方法。这种

方法用于帧的序号位置不变时,即点击按钮后到定时器响应帧的序号位置不变。否

则在Flash帧间循环播放动画时出现紊乱,假设m_FileOpenFlag的初始值为1,按

钮的功能使m_FileOpenFlag置成0,这样就造成VC++程序还没读取0值就又变回1.

str=m_iable(”m_FileOpenFlag");

if(str==”0"){

m_iable("m_FileOpenFlag”,"1”);

.。.。。//相应的处理代码

}

图4 VC++程序定时器函数流程

结束语

本文探讨了基于Flash页面显示的VC++编程在数据监控系统中的应用,及其相关的

Flash制作、数据传递交互性和动态性的具体实现,通过实际的应用和测试,成功的实

现了通过Flash页面对监视数据的显示和对设备的控制。本文也为类似的软件项目开发

提供了一种思路和参考模板.

参考文献

[1]

Robert Penner.

Programming Macromedia Flash MX

. McGraw—Hill/OsborneMedia

4、

2002。10

[2]

Chao C. Chien

Professional Software Development with Visual C++ 6。0 &

MFC

. Delmar Thomson Learning 2001。12

[3]

Russell Chun

,

H。 Paul Robertson

Macromedia Flash 8 Advanced for

Windows and Macintosh

. Peachpit Press 2005.12

[4]

马晓辉.在VC中实现Flash动画播放。 河北工程技术高等专科学校学报 2005。6

(2) 48-50

[5]

李康满,刘朝晖.在VC++中使用Flash动画技术。 衡阳师范学院学报 2005。12

Vol.26(6) 86-88

(完整)基于Flash页面显示的VC++编程实现

[6]

杨勇.调用Flash美化VC应用程序界面的实现. 电脑知识与技术 2006.8 (23)

168-194

[7]

边国栋,谢矿生,周小燕.利用FLASH MX开发竞赛用计时器软件. 微机发展 2003。1

Vol。13(1) 17—19

[8]

赵剑秋,朱明.用VC实现控制面板应用程序。 计算机技术与发展2006。6

Vol.16(6) 110-112