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


发布评论