做过界面开发的人想必都清楚如果要用VC++来开发漂亮的程序界面其难度真是苦不堪言, 当然VC++可以作出漂亮的界面但要投入大量的人力和时间其代码量可以用海量来形容。BUG自然也就不计其数。本文主要介绍如何采用VC++结合FLASH在短时间内以及很少的人力投入的情况开发出精美漂亮的软件界面。在本例中VC++主要进行相关数据逻辑及业务处理,FLASH则进行相关的界面表现。FLASH和VC++之间采用XML流通信。VC++的XML解析库为开源的TinyXml解析库。 本实例的开发环境为visual studio 2003 + FLASH8.0。其效果图如下:

下面将进行详细介绍:
1、首先建一个基于MFC的对话框应用程序。
2、在对话框中插入名为Shockwave Flash Object的ActiveX控件.
3、为该FLASH控件添加相应的变量即FSCommand消息处理函数.
4、在OnInitDialog()函数添加如下代码将相关数据传给FLASH界面
1

// TODO: 在此添加额外的初始化代码
2

//加载flash界面
3

char szBuf[256];
4

string szXml;
5

6

CString szFlashPath(m_FlashCtrl.GetModulePath());
7

szFlashPath += "演示界面.swf";
8

9

m_FlashCtrl.LoadMovie(0, szFlashPath);
10

MoveWindow(0, 0, 490, 345);
11

m_FlashCtrl.MoveWindow(0, 0, 490, 345);
12

13

//设置标题栏
14

TiXmlElement xRoot("win_app");
15

sprintf(szBuf, "%u", 0xf0000006);
16

xRoot.SetAttribute("style", szBuf);
17

xRoot.SetAttribute("event", 13);
18

19

TiXmlElement xItem("item");
20

xItem.SetAttribute("title", "我的测试程序");
21

xRoot.InsertEndChild(xItem);
22

szXml << xRoot;
23

m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
24

25

//设置组合框的数据
26

xRoot.Clear();
27

szXml.clear();
28

xRoot.SetAttribute("event", 76);
29

30

TiXmlElement xQuery("query");
31

xQuery.SetAttribute("sel_item", 1);
32

//xRoot.InsertEndChild(xQuery);
33

34

xItem.RemoveAttribute("title");
35

xItem.SetAttribute("info", "武林外传");
36

xQuery.InsertEndChild(xItem);
37

38

xItem.SetAttribute("info", "西游记");
39

xQuery.InsertEndChild(xItem);
40

41

xItem.SetAttribute("info", "三国演义");
42

xQuery.InsertEndChild(xItem);
43

44

xItem.SetAttribute("info", "红楼梦");
45

xQuery.InsertEndChild(xItem);
46

47

xItem.SetAttribute("info", "魔法英雄");
48

xQuery.InsertEndChild(xItem);
49

xRoot.InsertEndChild(xQuery);
50

51

szXml << xRoot;
52

m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
53

54

//设置列表框数据
55

xRoot.Clear();
56

xQuery.Clear();
57

szXml.clear();
58

xRoot.SetAttribute("event", 77);
59

xQuery.SetAttribute("sel_item", 1);
60
61

xItem.SetAttribute("info", "汉皇重色思倾国");
62

xQuery.InsertEndChild(xItem);
63

64

xItem.SetAttribute("info", "御宇多年求不得");
65

xQuery.InsertEndChild(xItem);
66

67

xItem.SetAttribute("info", "杨家有女初长成");
68

xQuery.InsertEndChild(xItem);
69

70

xItem.SetAttribute("info", "养在深闺人未识");
71

xQuery.InsertEndChild(xItem);
72

73

xItem.SetAttribute("info", "天生丽质难自弃");
74

xQuery.InsertEndChild(xItem);
75

76

xRoot.InsertEndChild(xQuery);
77

78

szXml << xRoot;
79

m_FlashCtrl.SetVariable("_root.g_Protocol.win_data", szXml.c_str());
5、在OnFsCommand()中处理FLASH发来的消息.
评论
# re: 谈VC++结合FLASH开发精美程序界面[未登录] 2008-08-28 14:17 代李
不知道这种能否被推广开来。。。。。。。。。。 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 14:38 司强
当然可以, 没有什么不可能的...@代李
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 14:40 二二
好东西,这样界面做的就漂亮了.. 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 14:51 司强
谢谢, 这样做界面可以节省不少时间而且不会出现什么断言,异常之类的问题@二二
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 15:46 www.helpsoff.com.cn
如何实现跨平台? 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 17:13 true
非常漂亮,可执行文件的体积有多少?太大的话,就不适合做界面了 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 17:34 浪迹天涯
界面很漂亮,不知Flash部分制作是否麻烦? 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 18:38 Bill Hsu
太强了,
就是速度不太强 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 19:46 RichardHe
国外早就有公司做游戏的UI用FLASH..
http://www.scaleform.com
要钱的!
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面[未登录] 2008-08-28 20:54 司强
主要用于windows平台...@www.helpsoff.com.cn
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 20:55 司强
体积不大,你可以下载源代码看看就知道了...@true
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 21:00 司强
对于界面你根本看不到速度慢...@Bill Hsu
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-28 23:36 地方
说实话,这个界面很恶俗………… 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-29 09:18 txw
天晴数码的游戏《魔域》,《机战》的登录界面都是Flash做的。非常漂亮。用Flash做界面真的很适用于游戏。c++只需处理业务逻辑,剩下的UI全部交给Flash,Flash也只需要写些简单的ActionScript脚本就够了。 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-29 09:19 txw
甚至可以把Flash视频渲染到3D场景里,你可以想象一下边玩游戏,边看奥运是多么舒服的事情。哈哈,扯远了。。。。 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-29 12:40 司强
支持仁兄...@txw
回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-29 23:26 大大
教育网的“快门”就这这样搞的 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-08-31 21:37 wx
点击右键出现什么菜单? 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-09-02 02:31 工
那还不如全部用flash做算了! 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-09-03 10:05 biinwi
界面能能放大缩小吗? 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2008-09-05 16:08 cplayer
如果能把两者关系到转过来还不错
因为我希望执行的是swf.
如果这样,就可以通过其他方式把数据处理放到c/c++程序,比如通过网络. 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2009-02-02 23:15 catasthophe
司强兄这个方法不错,试了下,想问一下程序窗口拖拽是怎么实现的,我试了很多鼠标事件都没成功,MOUSE_MOVE时间移动了但是必须移动着拖动窗口''!,还往赐教 回复 更多评论
# re: 谈VC++结合FLASH开发精美程序界面 2009-02-06 00:27 司强
我的文章里有提到,就在这篇文章里。其实就是一条系统消息@catasthophe
回复 更多评论