可视化程序设计入门.ppt_第1页
可视化程序设计入门.ppt_第2页
可视化程序设计入门.ppt_第3页
可视化程序设计入门.ppt_第4页
可视化程序设计入门.ppt_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可视化程序设计,Windows应用程序的基本特点和概念,使用向导建立应用程序,资源编辑器,常用控件,使用图形用户界面 使用面向对象的方法编程 基于消息驱动的程序设计,Windows应用程序的基本特点,基本特点和概念,对话框 人机交互的接口 图形用户界面(GUI:graphical user interface),图形用户界面,基本特点和概念,对应用程序的理解: 应用程序=代码+资源 前台:图形化的窗口、对话框、位图等; 后台:非图形化的类对象及其他代码;,面向对象编程方式,基本特点和概念,每个应用程序都可以看作一个类,运行时产生一个实例对象,每个实例对象有一个编号,称为“句柄”(HINSTANCE类型)。 操作系统必须依靠句柄识别对应的应用程序。 程序的资源包括:位图、光标、对话框、图标、菜单等。 每个资源对象都有一个ID,对应相应的类。,面向对象编程方式,基本特点和概念,控制台应用程序的执行依靠程序流程控制进行 windows应用程序中独立函数执行靠流程控制,整个程序中各个函数的跳转靠消息机制控制。 消息机制是windows应用程序最重要的特征之一,消息与消息处理函数,基本特点和概念,事件:在windows操作系统环境中,系统或用户产生的动作 消息:描述事件发生的信息 事件驱动机制:由事件发出消息,由消息触发对应的代码执行操作 消息到代码的关联,由VC+消息映射机制自动完成,消息与消息处理函数,基本特点和概念,Microsoft Foundation Class 微软基础类库 主要用于开发windows应用程序 是个类的层次结构,大部分由基类CObject类派生出来,MFC类库,基本特点和概念,1、生成标准程序结构:单文档、多文档、对话框等。 2、设计图形用户界面,添加控件 3、建立对象的事件驱动程序,编写相关代码 4、编译、链接、运行,使用向导建立应用程序,使用向导建立应用程序,使用向导建立应用程序的步骤:,设计一个可视化应用程序,可以计算圆的面积和周长。 见案例calculator.,使用向导建立应用程序,1、用向导建立对话框,使用向导建立应用程序,使用向导建立应用程序,使用向导建立应用程序,使用向导建立应用程序,2、设计图形用户界面,使用向导建立应用程序,3、设计对象的事件驱动程序,使用向导建立应用程序,3.1 建立与控件对应的程序变量,使用向导建立应用程序,3.2 编写响应消息的类函数,使用向导建立应用程序,(1)对话框初始化函数,BOOL CCalculatorDlg:OnInitDialog() CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here m_radius=0; m_girth=“0.00“; m_area=“0.00“; UpdateData(false); return TRUE; / return TRUE unless you set the focus to a control ,使用向导建立应用程序,(2)单击“确定”按钮的响应函数,使用向导建立应用程序,void CCalculatorDlg:OnButton1() / TODO: Add your control notification handler code here UpdateData(true); double girth,area; girth=2*3.1415*m_radius; area=3.1415*m_radius*m_radius; m_girth.Format(“%10.3f“,girth); m_area.Format(“%10.3f“,area); UpdateData(false); ,(2)单击“确定”按钮的响应函数,使用向导建立应用程序,(2)单击“清空”按钮的响应函数,void CCalculatorDlg:OnButton2() / TODO: Add your control notification handler code here m_radius=0; m_girth=“0.00“; m_area=“0.00“; UpdateData(false); ,(2)单击“清空”按钮的响应函数,使用向导建立应用程序,4、编译链接运行,使用向导建立应用程序,资源编辑器,可视化资源的编辑环境,资源编辑器,1、资源编辑器的基本操作,创建资源:插入菜单-资源 查看和修改:双击、属性对话框 资源符号:资源命名符号,与整数集对应。定义保存在头文件resource.h中。,资源编辑器,1、对话框编辑器(Dialog),功能:创建、编辑对话框,添加控件、调整布局、测试功能等 打开对话框编辑器会同时出现控件工具栏和对话框调整工具栏。 添加控件通过点击控件工具栏的对应按钮,在对话框中绘制。 设置tab键的方法:通过“布局”菜单中的“Tab顺序”菜单激活该功能,顺次点击对应的控件来更改顺序。,见案例calculator。,资源编辑器,2、菜单编辑器(Menu),菜单多出现在单文档或多文档程序结构中 功能:创建菜单和菜单项,为菜单定义热键、快捷键和状态提示,可以定义属性和消息处理函数。,见案例TestMenu。 该案例演示添加一个菜单项,该菜单项执行弹出对话框的操作。,操作过程: 建立单文档 添加菜单,给菜单命名 添加对话框,给对话框建立类 为菜单添加函数,函数中打开对话框,静态控件,void CMainFrame:Ontm() / TODO: Add your command handler code here TestDlg DlgObj; DlgObj.DoModal(); ,资源编辑器,3、快捷键编辑器(Accelerator),可以为菜单项定义快捷键 功能: 添加、删除、修改、浏览项目所用快捷键 查看和修改与快捷键表中每个条目有关的资源标识符 为菜单项定义快捷键,见案例TestMenuAlt 。 该案例演示为上例的菜单项添加一个快捷键。,资源编辑器,4、串表编辑器(String Table),功能:显示、编辑应用程序中的所有对象ID、值和标题。,5、版本信息编辑器(Version),6、图形编辑器(Icon),7、工具栏编辑器(Toolbar),功能:编辑和维护版本信息。,功能:编辑、绘制位图、图表和光标。,功能:创建工具栏资源。以图形方式显示需要处理的工具栏及已被选择的工具栏按钮图形。,见案例TestMenuAlt 。,对话框中的常用控件,静态控件 编辑框控件 按钮控件 列表框控件 滚动条控件,所有控件都是从CWnd类派生出来,静态控件,1、静态控件,功能: 显示文本、框、矩形、图标、位图和元文件 只能用来输出信息,不能接收用户信息 不能产生消息 包含: 静态文本控件:用于显示文本,caption属性值是要显示的内容。 群组框控件:用于控件分组,使界面对象功能从视觉上区分开。 图片控件:用于显示图形信息。type是图片类型;image属性当图片类型是icon或bitmap时,用来指定资源的ID;color属性用来设置frame的边框颜色或rectangle的填充颜色。,见案例StaticControl。,操作过程: 建立对话框 添加群组框控件、图片控件和静态文本控件 设置静态文本控件和群组框控件的标题 导入位图 设置图片控件类型为“位图类型”,与导入的位图关联,静态控件,编辑框控件,2、编辑框控件,功能:输入、编辑、修改文本内容、数据或口令,编辑框的属性: Align text(对齐方式) Multiline(是否可多行显示) Numbers(是否限制输入数字) Horizontal scroll(添加水平滚动条) Vertical scroll(添加垂直滚动条) Auto HScroll(输入超过编辑框区域时自动向右滚动) Auto VScroll(输入回车超过编辑框区域时自动向下滚动一页) want return(允许回车) Password(屏蔽输入内容) Border(控件周围加边框) Uppercase(字母转换为大写) Lowercase(字母转换为小写) Read-only(只读),2、编辑框控件,编辑框控件的消息: EN_CHANGE:文本被修改,在显示文字后发送 EN_UPDATE:文本被修改,在文本显示前发送 EN_HSCROLL:水平滚动条被使用时,显示更新前发送 EN_VSCROLL: 垂直滚动条被使用是,显示更新前发送消息 EN_KILLFOCUS:当控件失去键盘输入焦点时发送 EN_SETFOCUS:当控件得到键盘输入焦点时发送,基本操作: UpdateData(true):数据从编辑框控件向数据成员传递(对话框的公有成员函数) UpdateData(false):数据从数据成员向编辑框控件传递(对话框的公有成员函数) void SetPasswordChar(TCHAR ch):设置密码的替代字符(编辑框的公有成员函数),见案例EditControl。,编辑框控件,操作过程: 建立对话框 添加编辑框控件和静态文本框控件,并设置属性 为控件添加相应的数据成员 为消息添加相应的函数 添加初始化代码,编辑框控件,编辑框控件,编辑框控件,void CEditControlDlg:OnUpdateEdit1() / TODO: If this is a RICHEDIT control, the control will not / send this notification unless you override the CDialog:OnInitDialog() / function to send the EM_SETEVENTMASK message to the control / with the ENM_UPDATE flag ORed into the lParam mask. / TODO: Add your control notification handler code here m_edit1=“不能输入!“; UpdateData(false); ,编辑框控件,BOOL CEditControlDlg:OnInitDialog() CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here m_edit1=“第一个编辑框“; m_edit2.SetPasswordChar(#); UpdateData(false); return TRUE; / return TRUE unless you set the focus to a control ,编辑框控件,编辑框控件,按钮控件,3、按钮控件,三种: 按键按钮(Button) 复选框(Check Box) 单选按钮(Radio Button),见案例ButtonControl。 该案例中包含三类按钮,点击按钮会在编辑框中出现相应文字。,操作过程: 建立对话框 添加编辑框控件和按钮控件并设置相应属性 为控件添加相应的数据成员 为消息添加相应的函数,按钮控件,按钮控件,设置编辑框属性为只读,设置第一个复选按钮的标题为“打游戏”,其他属性设置参照上页对话框布局完成,按钮控件,为类添加控件关联的数据成员,按钮控件,为消息添加消息处理函数,按钮控件,void CButtonControlDlg:OnOK() / TODO: Add extra validation here m_edit1=“您点击了确定按钮。“; UpdateData(false); /CDialog:OnOK(); ,按钮控件,void CButtonControlDlg:OnCheck1() / TODO: Add your control notification handler code here if(m_check1=true) m_check1=false; m_edit1=“您取消了打游戏。“; else m_check1=true; m_edit1=“您选择了打游戏。“; UpdateData(false); ,按钮控件,void CButtonControlDlg:OnRadio1() / TODO: Add your control notification handler code here m_edit1=“选择了+单选按钮“; UpdateData(false); void CButtonControlDlg:OnRadio2() / TODO: Add your control notification handler code here m_edit1=“选择了-单选按钮“; UpdateData(false); ,按钮控件,列表框控件,4、列表框控件,输入控件,允许用户从所列表项中选择输入内容 。,列表框控件的属性: selection:用于指定列表框的类型。 Border:添加边框 Horizontal scroll:创建垂直滚动条 Vertical scroll:创建水平滚动条 Sort:列表项目按字母顺序排列 Multi-column:创建具有水平滚动条的多列列表框 Notify:用户对列表框进行操作时,向父窗口发送消息,列表框的基本操作: 列表项可以通过编号获取,从0开始编号。 列表项的添加和插入: int AddString(LPCTSTR lpszItem) int InsertString(int nIndex,LPCTSTR lpszItem) 列表项的关联与获取(把列表项和其他用户数据关联) int SetItemData(int nIndex,DWORD dwItemData); DWORD GetItemData(int nIndex) int SetItemDataPtr(int nIndex,void * pData); void * GetItemDataPtr(int nIndex) 列表项的删除: int DeleteString(UINT nIndex);/删除某项 void ResetContent();/清除所有项 单个列表项的选择和获取 int GetCurSel();/获取选中的列表项编号 int SetCurSel(int nSelect);/设置某个列表项呈选中状态,列表框控件,列表框的消息 LBN_DBLCLK:双击某个列表项发送 LBN_SETFOCUS:列表框获得键盘输入焦点时发送 LBN_KILLFOCUS:列表框失去键盘输入焦点时发送 LBN_SELCANCEL:列表框的当前选择项被取消时发送 LBN_SELCHANGE:列表框的当前选择项发生变化时发送,见案例TestListBox。 该案例可实现通过编辑框向列表框中添加、插入、删除记录。,列表框控件,列表框控件,操作过程: 建立对话框 添加编辑框控件、按钮控件和列表框控件,并设置相应属性 为控件添加相应的数据成员 添加新的数据结构 为消息添加相应的函数,列表框控件,其他属性设置参照对话框布局完成,列表框控件,添加与控件关联的数据成员,列表框控件,为列表框和三个按钮添加消息处理函数,列表框控件,为程序添加新的数据结构 addresslist,void CTestListBoxDlg:OnButtonAdd() / TODO: Add your control notification handler code here UpdateData(true); addresslist * p=new addresslist; p-name=m_name; p-phone=m_phone; int nIndex=m_list.AddString(m_name); m_list.SetItemDataPtr(nIndex,p); m_name=“; m_phone=“; UpdateData(false); ,列表框控件,void CTestListBoxDlg:OnButtonDel() / TODO: Add your control notification handler code here int nIndex = m_list.GetCurSel(); if(nIndex!=LB_ERR) addresslist * p=(addresslist *)m_list.GetItemDataPtr(nIndex); delete p; m_list.DeleteString(nIndex); m_name=“; m_phone=“; UpdateData(false); ,列表框控件,void CTestListBoxDlg:OnButtonInsert() / TODO: Add your control notification handler code here int nIndex = m_list.GetCurSel(); if(nIndex=LB_ERR)nIndex=0; UpdateData(true); addresslist * p=new addresslist; p-name=m_name; p-phone=m_phone; m_list.InsertString(nIndex,m_name); m_list.SetItemDataPtr(nIndex,p); m_name=“; m_phone=“; UpdateData(false); ,列表框控件,void CTestListBoxDlg:OnDblclkList1() / TODO: Add your control notification handler code here int nIndex=m_list.GetCurSel(); addresslist * p=(addresslist *)m_list.GetItemDataPtr(nIndex); m_name=p-name; m_phone=p-phone; UpdateData(false); ,列表框控件,添加撤销对话框消息函数,在该函数中释放动态开辟的空间。,列表框控件,void CTestListBoxDlg:OnDestroy() for(int nIndex=m_list.GetCount()-1;nIndex=0;nIndex-) delete (addresslist * ) m_list.GetItemDataPtr(nIndex); CDialog:OnDestroy(); ,列表框控件,滚动条控件,5、滚动条控件,输入数据的计数器控件。 分为:水平滚动条和垂直滚动条 。,滚动条的基本操作 设置滚动条的范围: void SetScrollRange(int nMinpos,int nMaxpos,BOOL bRedraw = true ) ; 设置滚动块的位置: int SetScrollPos(int nPos,BOOL bRedraw = true); 获取滚动条当前范围和当前滚动位置 void GetScrollRange(LPINT lpMinpos, LPINT lpMaxpos); int GetScrollPos();,滚动条的消息 WM_HSCROLL:滚动水平滚动条时发送 WM_VSCROLL:滚动垂直滚动条时发送 SB_LEFT,SB_RIGHT:滚动到最左端或最右端时发送 SB_TOP,SB_BOTTOM:滚动到最上端或最下端时发送 SB_LINELEFT,SB_LINERIGHT:按了水平滚动条的左箭头或右箭头按钮时发送 SB_PAGELEFT,SB_PAGERIGHT:按了水平滚动条的左翻页或右翻页区时发送 SB_THUMBPOSITION:滚动到某指定位置时发送 SB_THUMBTRACK:正在拖曳滚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论