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

下载本文档

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

文档简介

1、windowswindows应用程序的基本特点和概念应用程序的基本特点和概念使用向导建立应用程序使用向导建立应用程序资源编辑器资源编辑器常用控件常用控件 使用图形用户界面使用图形用户界面 使用面向对象的方法编程使用面向对象的方法编程 基于消息驱动的程序设计基于消息驱动的程序设计基本特点和概念基本特点和概念 对话框对话框 人机交互的接口人机交互的接口 图形用户界面(图形用户界面(gui:graphicalgui:graphical user user interfaceinterface)基本特点和概念基本特点和概念对应用程序的理解:对应用程序的理解:应用程序应用程序= =代码代码+ +资源资源

2、前台:图形化的窗口、对话框、位图等;前台:图形化的窗口、对话框、位图等;后台:非图形化的类对象及其他代码;后台:非图形化的类对象及其他代码;基本特点和概念基本特点和概念 每个应用程序都可以看作一个类,运行时产生一个实每个应用程序都可以看作一个类,运行时产生一个实例对象,每个实例对象有一个编号,称为例对象,每个实例对象有一个编号,称为“ “句柄句柄” ”(hinstancehinstance类型)。类型)。 操作系统必须依靠句柄识别对应的应用程序。操作系统必须依靠句柄识别对应的应用程序。 程序的资源包括:位图、光标、对话框、图标、菜单程序的资源包括:位图、光标、对话框、图标、菜单等。等。 每个资

3、源对象都有一个每个资源对象都有一个idid,对应相应的类。,对应相应的类。基本特点和概念基本特点和概念 控制台应用程序的执行依靠程序流程控制进行控制台应用程序的执行依靠程序流程控制进行 windowswindows应用程序中独立函数执行靠流程控制,应用程序中独立函数执行靠流程控制,整个程序中各个函数的跳转靠消息机制控制。整个程序中各个函数的跳转靠消息机制控制。 消息机制是消息机制是windowswindows应用程序最重要的特征之一应用程序最重要的特征之一基本特点和概念基本特点和概念事件:在事件:在windowswindows操作系统环境中,系统或用户产生的操作系统环境中,系统或用户产生的动作

4、动作消息:描述事件发生的信息消息:描述事件发生的信息事件驱动机制:由事件发出消息,由消息触发对应的事件驱动机制:由事件发出消息,由消息触发对应的代码执行操作代码执行操作消息到代码的关联,由消息到代码的关联,由vc+vc+消息映射机制自动完成消息映射机制自动完成基本特点和概念基本特点和概念 microsoft foundation class microsoft foundation class 微软基础类库微软基础类库主要用于开发主要用于开发windowswindows应用程序应用程序是个类的层次结构,大部分由基类是个类的层次结构,大部分由基类cobjectcobject类类派生出来派生出来基

5、本特点和概念基本特点和概念1 1、生成标准程序结构:单文档、多文档、对话框等。、生成标准程序结构:单文档、多文档、对话框等。2 2、设计图形用户界面,添加控件、设计图形用户界面,添加控件3 3、建立对象的事件驱动程序,编写相关代码、建立对象的事件驱动程序,编写相关代码4 4、编译、链接、运行、编译、链接、运行使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序的步骤:使用向导建立应用程序的步骤:设计一个可视化应用程序,可以计算圆的面积和周长。见案例calculator.使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程

6、序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序(1)对话框初始化函数)对话框初始化函数bool ccalculatordlg:oninitdialog()cdialog:oninitdialog();/ set the icon for this dialog. the framework does this automatically/ when the applications main wind

7、ow is not a dialogseticon(m_hicon, true);/ set big iconseticon(m_hicon, false);/ set small icon/ todo: add extra initialization herem_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)单击)单击“确定确定”按钮的响应函数按钮的响应函数使用

8、向导建立应用程序使用向导建立应用程序void ccalculatordlg:onbutton1() / todo: add your control notification handler code hereupdatedata(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)单击)单击“确定确定”按钮的响应函数按钮的响应函数使用向导

9、建立应用程序使用向导建立应用程序(2)单击)单击“清空清空”按钮的响应函数按钮的响应函数void ccalculatordlg:onbutton2() / todo: add your control notification handler code herem_radius=0;m_girth=0.00;m_area=0.00;updatedata(false);(2)单击)单击“清空清空”按钮的响应函数按钮的响应函数使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序使用向导建立应用程序可视化资源的编辑环境可视化资源的编辑环境资源编辑器资源编辑器创建资源:插入菜单创建资源:插入菜

10、单-资源资源查看和修改:双击、属性对话框查看和修改:双击、属性对话框资源符号:资源命名符号,与整数集对应。定义保存资源符号:资源命名符号,与整数集对应。定义保存在头文件在头文件resource.h中。中。位图位图idb_控件控件idc_对话框对话框idd_菜单菜单idm_图标图标idr_串表串表ids_资源编辑器资源编辑器功能功能:创建、编辑对话框,添加控件、调整布局、测试功能等:创建、编辑对话框,添加控件、调整布局、测试功能等 打开对话框编辑器会同时出现打开对话框编辑器会同时出现控件工具栏控件工具栏和和对话框调整工具栏对话框调整工具栏。添加控件添加控件通过点击控件工具栏的对应按钮,在对话框中

11、绘制。通过点击控件工具栏的对应按钮,在对话框中绘制。设置设置tab键键的方法:通过的方法:通过“布局布局”菜单中的菜单中的“tab顺序顺序”菜单激活该菜单激活该功能,顺次点击对应的控件来更改顺序。功能,顺次点击对应的控件来更改顺序。见案例见案例calculator。资源编辑器资源编辑器菜单多出现在菜单多出现在单文档单文档或或多文档多文档程序结构中程序结构中 功能功能:创建菜单和菜单项,为菜单定义热键、快捷键:创建菜单和菜单项,为菜单定义热键、快捷键和状态提示,可以定义属性和消息处理函数。和状态提示,可以定义属性和消息处理函数。 见案例见案例testmenu。该案例演示添加一个菜单项,该菜单项执

12、行弹出对话框的该案例演示添加一个菜单项,该菜单项执行弹出对话框的操作。操作。 操作过程:操作过程:1. 建立单文档建立单文档2. 添加菜单,给菜单命名添加菜单,给菜单命名3. 添加对话框,给对话框建立类添加对话框,给对话框建立类4. 为菜单添加函数,函数中打开对话框为菜单添加函数,函数中打开对话框静态控件静态控件void cmainframe:ontm() / todo: add your command handler code heretestdlg dlgobj;dlgobj.domodal();资源编辑器资源编辑器可以为菜单项定义快捷键可以为菜单项定义快捷键 功能功能:添加、删除、修改

13、、浏览项目所用快捷键添加、删除、修改、浏览项目所用快捷键查看和修改与快捷键表中每个条目有关的资源标查看和修改与快捷键表中每个条目有关的资源标识符识符为菜单项定义快捷键为菜单项定义快捷键见案例见案例testmenualt 。该案例演示为上例的菜单项添加一个快捷键。该案例演示为上例的菜单项添加一个快捷键。资源编辑器资源编辑器功能:显示、编辑应用程序中的所有对象功能:显示、编辑应用程序中的所有对象id、值和标题。、值和标题。功能:编辑和维护版本信息。功能:编辑和维护版本信息。功能:编辑、绘制位图、图表和光标。功能:编辑、绘制位图、图表和光标。功能:创建工具栏资源。以图形方式显示需要处理的工具栏功能:

14、创建工具栏资源。以图形方式显示需要处理的工具栏及已被选择的工具栏按钮图形。及已被选择的工具栏按钮图形。见案例见案例testmenualt 。静态控件静态控件编辑框控件编辑框控件按钮控件按钮控件列表框控件列表框控件滚动条控件滚动条控件所有控件都是从所有控件都是从cwnd类派生出来类派生出来静态控件静态控件 功能:功能: 显示显示文本、框、矩形、图标、位图和元文件文本、框、矩形、图标、位图和元文件 只能用来只能用来输出信息输出信息,不能接收用户信息不能接收用户信息 不能产生消息不能产生消息 包含:包含: 静态文本控件静态文本控件:用于显示文本,:用于显示文本,caption属性值属性值是要显示的内

15、容。是要显示的内容。 群组框控件群组框控件:用于控件分组,使界面对象功能从:用于控件分组,使界面对象功能从视觉上区分开。视觉上区分开。 图片控件图片控件:用于显示图形信息。:用于显示图形信息。type是图片类型;是图片类型;image属性当图片类型是属性当图片类型是icon或或bitmap时,用来时,用来指定资源的指定资源的id;color属性用来设置属性用来设置frame的边框的边框颜色或颜色或rectangle的填充颜色。的填充颜色。见案例见案例staticcontrol。 操作过程:操作过程:1. 建立对话框建立对话框2. 添加群组框控件、图片控件和静态文本控件添加群组框控件、图片控件和

16、静态文本控件3. 设置静态文本控件和群组框控件的标题设置静态文本控件和群组框控件的标题4. 导入位图导入位图5. 设置图片控件类型为设置图片控件类型为“位图类型位图类型”,与导入的位图,与导入的位图关联关联静态控件静态控件编辑框控件编辑框控件功能功能:输入、编辑、修改文本内容、数据或口令:输入、编辑、修改文本内容、数据或口令编辑框的属性:编辑框的属性:align text(对齐方式对齐方式)multiline(是否可多行显示是否可多行显示)numbers(是否限制输入数字是否限制输入数字)horizontal scroll(添加水平滚动条添加水平滚动条)vertical scroll(添加垂直

17、滚动条添加垂直滚动条)auto hscroll(输入超过编辑框区域时自动向右滚动输入超过编辑框区域时自动向右滚动)auto vscroll(输入回车超过编辑框区域时自动向下滚动一页输入回车超过编辑框区域时自动向下滚动一页)want return(允许回车允许回车)password(屏蔽输入内容屏蔽输入内容)border(控件周围加边框控件周围加边框)uppercase(字母转换为大写字母转换为大写)lowercase(字母转换为小写字母转换为小写)read-only(只读只读)编辑框控件的消息:编辑框控件的消息:en_change:文本被修改,在显示文字后发送文本被修改,在显示文字后发送en_

18、update:文本被修改,在文本显示前发送文本被修改,在文本显示前发送en_hscroll:水平滚动条被使用时,显示更新前发送水平滚动条被使用时,显示更新前发送en_vscroll: 垂直滚动条被使用是,显示更新前发送消息垂直滚动条被使用是,显示更新前发送消息en_killfocus:当控件失去键盘输入焦点时发送当控件失去键盘输入焦点时发送en_setfocus:当控件得到键盘输入焦点时发送当控件得到键盘输入焦点时发送基本操作:基本操作:updatedata(true):数据从编辑框控件向数据成员传递(对话框的:数据从编辑框控件向数据成员传递(对话框的公有成员函数)公有成员函数)updated

19、ata(false):数据从数据成员向编辑框控件传递(对话框:数据从数据成员向编辑框控件传递(对话框的公有成员函数)的公有成员函数)void setpasswordchar(tchar ch):设置密码的替代字符(编辑框设置密码的替代字符(编辑框的公有成员函数)的公有成员函数)见案例见案例editcontrol。编辑框控件编辑框控件 操作过程:操作过程:1. 建立对话框建立对话框2. 添加编辑框控件和静态文本框控件,并设置属性添加编辑框控件和静态文本框控件,并设置属性3. 为控件添加相应的数据成员为控件添加相应的数据成员4. 为消息添加相应的函数为消息添加相应的函数5. 添加初始化代码添加初始

20、化代码编辑框控件编辑框控件编辑框控件编辑框控件编辑框控件编辑框控件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 th

21、e lparam mask./ todo: add your control notification handler code herem_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 dialogsetico

22、n(m_hicon, true);/ set big iconseticon(m_hicon, false);/ set small icon/ todo: add extra initialization herem_edit1=第一个编辑框第一个编辑框;m_edit2.setpasswordchar(#);updatedata(false);return true; / return true unless you set the focus to a control编辑框控件编辑框控件编辑框控件编辑框控件按钮控件按钮控件三种:三种:按键按钮按键按钮(button)复选框复选框(check

23、 box)单选按钮单选按钮(radio button)见案例见案例buttoncontrol。该案例中包含三类按钮,点击按钮会在编辑框中出现相应该案例中包含三类按钮,点击按钮会在编辑框中出现相应文字。文字。 操作过程:操作过程:1. 建立对话框建立对话框2. 添加编辑框控件和按钮控件并设置相应属性添加编辑框控件和按钮控件并设置相应属性3. 为控件添加相应的数据成员为控件添加相应的数据成员4. 为消息添加相应的函数为消息添加相应的函数按钮控件按钮控件按钮控件按钮控件设置编辑框属性为只读设置编辑框属性为只读设置第一个复选按钮的标题为设置第一个复选按钮的标题为“打游戏打游戏”其他属性设置参照上页对话

24、框布局完成其他属性设置参照上页对话框布局完成按钮控件按钮控件为类添加控件关联的数据成员为类添加控件关联的数据成员按钮控件按钮控件为消息添加消息处理函数为消息添加消息处理函数按钮控件按钮控件void cbuttoncontroldlg:onok() / todo: add extra validation herem_edit1=您点击了确定按钮。您点击了确定按钮。;updatedata(false);/cdialog:onok();按钮控件按钮控件void cbuttoncontroldlg:oncheck1() / todo: add your control notification ha

25、ndler code hereif(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 herem_edit1=选择了选择了+单选按钮单选按钮;updatedata(false);void cbuttoncontroldlg:onra

26、dio2() / todo: add your control notification handler code herem_edit1=选择了选择了-单选按钮单选按钮;updatedata(false);按钮控件按钮控件列表框控件列表框控件输入控件,允许用户从所列表项中选择输入内容输入控件,允许用户从所列表项中选择输入内容 。列表框控件的属性:列表框控件的属性:selection:用于指定列表框的类型。:用于指定列表框的类型。border:添加边框:添加边框horizontal scroll:创建垂直滚动条:创建垂直滚动条vertical scroll:创建水平滚动条:创建水平滚动条sor

27、t:列表项目按字母顺序排列:列表项目按字母顺序排列multi-column:创建具有水平滚动条的多列列表框:创建具有水平滚动条的多列列表框notify:用户对列表框进行操作时,向父窗口发送消息:用户对列表框进行操作时,向父窗口发送消息列表框的基本操作:列表框的基本操作:列表项可以通过编号获取,从列表项可以通过编号获取,从0开始编号。开始编号。列表项的添加和插入:列表项的添加和插入:int addstring(lpctstr lpszitem)int insertstring(int nindex,lpctstr lpszitem)列表项的关联与获取(把列表项和其他用户数据关联)列表项的关联与获

28、取(把列表项和其他用户数据关联)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();/获取选中的列表项编号

29、获取选中的列表项编号int setcursel(int nselect);/设置某个列表项呈选中状态设置某个列表项呈选中状态列表框控件列表框控件列表框的消息列表框的消息lbn_dblclk:双击某个列表项发送:双击某个列表项发送lbn_setfocus:列表框获得键盘输入焦点时发送:列表框获得键盘输入焦点时发送lbn_killfocus:列表框失去键盘输入焦点时发送:列表框失去键盘输入焦点时发送lbn_selcancel:列表框的当前选择项被取消时发送:列表框的当前选择项被取消时发送lbn_selchange:列表框的当前选择项发生变化时发送:列表框的当前选择项发生变化时发送见案例见案例tes

30、tlistbox。该案例可实现通过编辑框向列表框中添加、插入、删除记该案例可实现通过编辑框向列表框中添加、插入、删除记录。录。列表框控件列表框控件列表框控件列表框控件 操作过程:操作过程:1. 建立对话框建立对话框2. 添加编辑框控件、按钮控件和列表框控件,并设置添加编辑框控件、按钮控件和列表框控件,并设置相应属性相应属性3. 为控件添加相应的数据成员为控件添加相应的数据成员4. 添加新的数据结构添加新的数据结构5. 为消息添加相应的函数为消息添加相应的函数列表框控件列表框控件其他属性设置参照对话框布局完成其他属性设置参照对话框布局完成列表框控件列表框控件添加与控件关联的数据成员添加与控件关联

31、的数据成员列表框控件列表框控件为列表框和三个按钮添加消息处理函数为列表框和三个按钮添加消息处理函数列表框控件列表框控件为程序添加新的数据结构addresslistvoid ctestlistboxdlg:onbuttonadd() / todo: add your control notification handler code hereupdatedata(true);addresslist * p=new addresslist;p-name=m_name;p-phone=m_phone;int nindex=m_list.addstring(m_name);m_list.setitem

32、dataptr(nindex,p);m_name=;m_phone=;updatedata(false);列表框控件列表框控件void ctestlistboxdlg:onbuttondel() / todo: add your control notification handler code hereint nindex = m_list.getcursel();if(nindex!=lb_err)addresslist * p=(addresslist *)m_list.getitemdataptr(nindex);delete p;m_list.deletestring(nindex)

33、;m_name=;m_phone=;updatedata(false);列表框控件列表框控件void ctestlistboxdlg:onbuttoninsert() / todo: add your control notification handler code hereint 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(nin

34、dex,m_name);m_list.setitemdataptr(nindex,p);m_name=;m_phone=;updatedata(false);列表框控件列表框控件void ctestlistboxdlg:ondblclklist1() / todo: add your control notification handler code hereint nindex=m_list.getcursel();addresslist * p=(addresslist *)m_list.getitemdataptr(nindex);m_name=p-name;m_phone=p-phon

35、e;updatedata(false);列表框控件列表框控件添加撤销对话框消息函数,在该函数中释放动态开辟的空间。添加撤销对话框消息函数,在该函数中释放动态开辟的空间。列表框控件列表框控件void ctestlistboxdlg:ondestroy() for(int nindex=m_list.getcount()-1;nindex=0;nindex-)delete (addresslist * ) m_list.getitemdataptr(nindex);cdialog:ondestroy();列表框控件列表框控件滚动条控件滚动条控件输入数据的计数器控件。输入数据的计数器控件。分为:水平

36、滚动条和垂直滚动条分为:水平滚动条和垂直滚动条 。滚动条的基本操作滚动条的基本操作设置滚动条的范围:设置滚动条的范围:void setscrollrange(int nminpos,int nmaxpos,bool bredraw = true ) ;设置滚动块的位置:设置滚动块的位置:int setscrollpos(int npos,bool bredraw = true);获取滚动条当前范围和当前滚动位置获取滚动条当前范围和当前滚动位置void getscrollrange(lpint lpminpos, lpint lpmaxpos);int getscrollpos();滚动条的消息

37、滚动条的消息wm_hscroll:滚动水平滚动条时发送:滚动水平滚动条时发送wm_vscroll:滚动垂直滚动条时发送:滚动垂直滚动条时发送sb_left,sb_right:滚动到最左端或最右端时发送:滚动到最左端或最右端时发送sb_top,sb_bottom:滚动到最上端或最下端时发送:滚动到最上端或最下端时发送sb_lineleft,sb_lineright:按了水平滚动条的左箭头或右:按了水平滚动条的左箭头或右箭头按钮时发送箭头按钮时发送sb_pageleft,sb_pageright:按了水平滚动条的左翻页或:按了水平滚动条的左翻页或右翻页区时发送右翻页区时发送sb_thumbposition:滚动到某指定位置时发送:滚动到某指定位置时发送sb_thumbtrack:正在拖曳滚动块时发送:正在拖曳滚动块时发送sb_en

温馨提示

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

评论

0/150

提交评论