标题动画在VFP 表单和VC++对话框中的设计

来源 :科学时代 | 被引量 : 0次 | 上传用户:starrydzf_01
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 借助VFP的表单和VC++的对话框工具进行标题动画设计,帮助初学者快速掌握VFP表单、VC++对话框设计技巧。
  [关键字] VFP,VC++,标题动画,表单,对话框
  [Abstract] This paper details a example for motion text effect in VFP Form and VC++ Dialog,which is helpful for a beginner.
  [Key Words] VFP VC++ Motion Text Effect Form Dialog
  
  引言
  1989年,FOX软件公司开发了FoxBASE+的后续产品——FoxPro.1992年美国微软公司收购了FOX公司,1993年推出了FoxPro for Windows(2.5版),1995年,微软公司首次将可视化程序设计引入了FoxPro,并将其新版本取名为visual FoxPro 3.0,简称VFP3.0。到1998年VFP推出了6.0版。VFP 6.0具有强大的查询与管理功能,引入了数据库表的新概念,扩大了对SQL语言的支持,大量使用可视化的界面操作工具,支持面向对象的程序设计,通过OLE实现应用集成,支持网络应用等特点。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。
  VFP和VC在进行可视化界面设计时既有相似又有本质的不同,本文通过标题文本动画窗口的设计来感受它们之间的差异。
  一、标题动画在VFP表单中的设计
  在使用VFP 所开发的应用程序中,表单是主要的用户界面。利用它,用户可进行各种原始数据的输入、修改及删除等维护操作,同时表单也是除菜单以外的用户可以对系统发出各种命令、可与系统进行人机交互的主要窗口。在VFP 表单的设计过程中,虽然可以移植其它应用程序所创动画效果的控件,如OLE 容器控件和OLE 绑定型控件,但受电脑中已安装软件种类的限制,利用这两个控件设计动画效果有一定困难。因此下面介绍Timer 控件在表单动画设计中的应用。
  1.1界面设计
  表单中有三个按钮控件,一个标签控件,一个计时器控件,控件在表单中的位置如图1.1所示
  
   图 1.1
  单击“开始动画”按钮,文本自左向右滚动,当文本的最右端滚动出窗体的左边界时,文本的左端在窗体的右边界出现,并向左移动;单击“停止动画”按钮,文本静止在窗体上;单击“退出”按钮,释放表单,运行结束。
  1.2控件属性和代码设置
  各个控件的属性设置及事件代码如下:
  标签控件:Lable2
  属性名 属性值
  Caption “欢迎使用本程序”
  Autosize .T.
  Backstyle 0
  Alignment 2
  Fontname “华文行楷”
  Fontsize 36
  
  按钮控件:command1
  属性名 属性值
  Caption “开始动画”
  
  Click事件代码如下:
  thisform.timer1.enabled=.t.
  按钮控件:command2
  属性名 属性值
  Caption “退出”
  
  Click事件代码如下:
  thisform. Release
  按钮控件:command3
  属性名 属性值
  Caption “停止动画”
  
  Click事件代码如下:
  thisform.timer1.enabled=.f.
  计时器控件:timer1
  属性名 属性值
  interval 100
  
  timer事件代码如下:
  thisform. label2. left = thisform. label2. left - 3
  if thisform. label2. left + thisform.label2.width < 0
  thisform. label2. left = thisform.width
  Endif
  1.3运行结果
  程序运行结果如图1.2和1.3
  
  图 1.2图 1.3
  二、标题动画在VC++对话框中的设计
  2.1使用AppWizard创建一个基于对话框的MFC应用程序,设置工程名为Dialog
  对于基于MFC的应用程序,程序的执行都是从调用CWinApp派生类的InitInstance()方法开始的,然后创建窗口或线程,处理Windows消息并继续程序的执行。
  在工程(Project)选项卡中选中MFC AppWizard[exe],工程名(Project name)为Dialog,将保存位置定位至将要存放该应用程序的文件夹,例如Q:VISUAL C++实验10,按确定(OK)。在向导第一步中选择基于对话框(Dialog based),直接按完成(Finish)就可以建立一个名称为“Dialog”的工程,该工程下包含三个类:CAboutDlg, CDialogApp, CDialogDlg。其中,CDialogApp是最重要的一个类。
  2.2 设置控件属性及布局
  添加一个“静态文本”控件和一个“按钮”控件,控件和对话框的属性如表1.1所示
  表1. 1
  控件 ID 标题 属性
  对话框 IDD_DIALOG_DIALOG 标题动画 默认
  静态文本 IDC_STATIC1 -- 显示,CENTER,TRANSPARENT
  按钮 IDOK 开始动画 默认
  按钮 IDCANCEL 退出 默认
  按钮 IDC_BUTTON1 停止动画 默认
  
  布局如图2.1所示
  
   图 2.1
  2.3创建类成员变量和消息影射函数
  1)为static控件关联一个control变量m_ctlMove;
  2)为CdialogDlg类添加成员变量int x,int y;分别表示static控件左上角的横坐标和纵坐标;
  3)为CdialogDlg类添加成员变量Cfont m_Font;
  4)使用ClassWizard为对话框CdialogDlg添加WM_INITDIALOG消息处理函数OnInitDialog(),添加WM_TIMER的消息处理函数OnTimer();
  5)为按钮IDC_BUTTON1增加BN_CLICKED的消息映射函数Onbutton1()。
  2.4代码设置
  在函数BOOL CDialogDlg::OnInitDialog()中添加如下代码
  CDialogDlg::x=0;
  CDialogDlg::y=40;
  m_ctlMove.SetWindowText(“欢迎使用本程序”);
  m_Font.CreatePointFont(400 , “华文行楷”);
  m_ctlMove.SetFont(&m_Font,TRUE);
  在函数void CDialogDlg::OnTimer(UINT nIDEvent)中添加如下代码
  x+=5;
  m_ctlMove.SetWindowPos(NULL,x,y,0,0,SWP_NOSIZE);
  CRect rect;
  GetClientRect(&rect);
  if(x>rect.Width())
  x=-100;
  在函数void CDialogDlg::Onbutton() 中添加如下代码
  SetTimer(1,100,NULL);
  在函数void CDialogDlg::OnButton1()中添加如下代码
  KillTimer(1);
  2.5运行结果如图2.2,2.3所示
  
  图2. 2 图2. 3
  三、结束语
  Visual Foxpro中提供了强有力的表单设计手段,用户通过可视化的设计方法,能够方便地定义表单中的各种对象、对象的属性、对象的方法。学习掌握了表单的设计方法后,将对Visual Foxpro的功能以及面向对象的方法有一个更直观的认识。在MFC中,CWnd类是所有窗口和子控件的基类,MFC中的对话框存储在资源文件中,在那里它们的布局和内容都是用一种单独的语言来进行描述的;在MFC中,能够开发SDI(单文档界面)、MDI(多文档界面)和基于对话框的应用程序,而且用来开发MDI、SDI和基于对话框的应用程序的类都各不相同。对话框是程序中一个常见的用户界面元素。它是Windows应用程序的一种资源。MFC提供了大量的控件类,通过这些控件类,可以方便地创建控件。所有的控件类都是CWnd类的直接或间接派生类。控件通过向父窗口发送控件通知消息来表明发生了某种事件。利用ClassWizard可以很容易地为控件通知消息加入消息映射和消息处理函数。通过标题动画的设计有助于学习表单设计和对话框及控件的学习。
  参考文献:
  [1] 杨正翔.动画效果在VFP 表单中的设计[J]. 南京工业职业技术学院学报,第3 卷第4 期.
  [2] 刘卫国.Visual Foxpro 程序设计教程[M] . 北京:北京邮电大学出版社,2005.
  [3] 郑阿奇.Visual C++实用教程[M].北京:电子工業出版社,2006.
其他文献
【摘 要】:军队士官教育对士官有正的外部性,但是,完全的外部性,不能很好的分配军队的教育资源,达不到应有的经济效益。所以研究士官教育的外部性问题,恰当的制定士官教育政策,通过士官教育的外部性激发士官学习的积极性,提高士官教育的成果是一个值得研究的问题。对于优化士官教育资源有效配置,提高士官教育效益有着积极的作用。  【关键词】:士官教育 外部性 资源配置  中图分类号:G7文献标识码:A 文章编号