Windows编程入门2.ppt_第1页
Windows编程入门2.ppt_第2页
Windows编程入门2.ppt_第3页
Windows编程入门2.ppt_第4页
Windows编程入门2.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、,VC+的Windows编程入 门,冯耀霖,3 常用控件,静态控件 编辑框控件 按钮控件 列表框和组合框控件 滚动条控件,静态控件的基类是CStatic。所谓“静态”,是指这类控件只能用于输出信息,而不能接收用户的输入信息,也不会产生任何消息。静态控件对象的ID值都默认为:IDC_STATIC。 有三种标准的静态控件:静态文本框(Static Text)、组框(Group Box)和图片框(Picture)。 (1)静态文本框用于显示文本,主要起标注作用。“标题”(Caption)是其最重要的属性,标题值就是需显示的文本。 (2)组框用于控件分组,使界面对象的功能从视觉上进行区分,主要用于对单

2、选按钮进行分组。主要属性就是“标题”。,3.1 静态控件,(3)图片框有三个重要的属性: Type(类型):图片类型可选择Icon(图标)、Bitmap(位图)、Enhanced Metafile(增强图元文件)、Frame(框架)、Rectangle(矩形区域)等。 Image(图象):当图片类型为Icon或Bitmap时,通过此属性可以指定资源的ID(在Windows程序设计中,资源也是对象)。如果要在设计阶段把外部的图象插入到图片控件,则先要把外部的图象文件导入工程,才能成为可用资源。 Color(颜色):设置Frame的边框颜色或Rectangle的填充色。可选的颜色有break(黑)

3、、while(白)、gray(灰)或者etched(有3D外观的腐蚀色)。,编辑框(Edit Box)也称文本框,MFC的Cedit类封装了编辑框控件。 编辑框实际上是一个简易的文本编辑器,用户可以在编辑框中输入并编辑文本。,3.2 编辑框控件,编辑框控件的主要属性 Align text 文本对齐方式,其值可以是Left、Right、Center(居中)。 Multiline 多行文本,默认是FALSE(单行)。 Number 只接受数字符号。 Horizontal scroll 添加水平滚动条,只对多行文本有效。 Vertical scroll 添加垂直滚动条,只对多行文本有效。 Passw

4、ord 屏蔽用户输入的信息,用特定字符统一显示,默认字符是 *。,Step1:建立工程架构 使用MFC AppWizard建立一个对话框工程, 工程名为:casePW,【Case2】密码输入,Step2:设计窗口界面 使用对话框编辑器设计工程的窗口界面,如图22所示。各控件的属性设置如下: - 控件名ID 标题其他属性 - 编辑框IDC_EDIT1 密码 静态文本IDC_STATIC1 输入密码:居中 静态文本IDC_STATIC2 居中,Client edge 命令按钮IDC_BUTTON1 确定 命令按钮IDC_BUTTON2 退出 -,Step3:设计消息处理成员函数 使用MFC Cla

5、ss Wizard设计成员变量和消息处理函数。 (1)为对话框设置绑定相关控件的2个成员变量 - 控件名 成员变量名变量类型 字符个数 - IDC_EDIT1 m_pwd Value , Cstring 6 IDC_STATIC2 m_OK Value , Cstring 20 - (2)建立“确定”按钮的BN_CLICKED消息处理函数OnButton1( ),用于接收用户输入,检测密码的合法性。,为OnButton1()添加的代码如下: /TODO Add your control notification handler code here UpdateDtata(); /控件数据传递给

6、成员变量 if(m_pwd=”pwd123”) m_OK=”密码正确!”; else m_OK=”密码错误!”; UpdateData(FALSE);/成员变量中的数据传递给控件,(3)建立“退出”按钮的BN_CLICKED消息处理函数OnButton2( ),用于结束工程的运行。 为OnButton2()添加的代码如下: /TODO Add your control notification handler code here EndDialog(1); Step4:工程的编译、链接和运行 运行结果如图23所示。,MFC提供有三种标准按钮控件: 命令按钮(Button) 复选框按钮(Chec

7、k Box) 单选按钮(Radio Button) 它们都是CButton类的派生类。,3.3 按钮控件,命令按钮也称按键按钮,可以触发某个命令的执行,这种按钮不会被锁定,响应过后会自动弹起恢复原状。 复选框和单选按钮都属于选择性按钮,都有两种状态:选择(1)和未选择(0)。它们的差别在于:复选框是相容性按钮,即在一组复选框中可同时有多个复选框处于选择状态;而单选按钮则是互斥性按钮,即在一组单选按钮中只能有一个处于选择状态,当一个单选按钮被选中时,同组的其他单选按钮自动落选。,本实例利用命令按钮和单选按钮设计一个只进行四则算术运算的简单计算器。 Step1:建立工程架构 使用MFC AppWi

8、zard建立一个对话框工程,工程名为:Calculator01 Step2:设计窗口界面 使用对话框编辑器设计工程的窗口界面,效果如图24所示。各控件的属性设置如下:,【Case3】简单计算器(1),控件名ID 标题 其他属性 - 编辑框IDC_EDIT1 无 Left 编辑框IDC_EDIT2 无 Left 静态文本IDC_STATIC1 无 Left, Client edge 静态文本IDC_STATIC2 运算数1 Center 静态文本IDC_STATIC3 运算数2 Center 静态文本IDC_STATIC4 结果 Center 组框IDC_STATIC5 运算符 单选按钮IDC_

9、RADIO1 单选按钮IDC_RADIO2 单选按钮IDC_RADIO3 单选按钮IDC_RADIO4 命令按钮IDC_BUTTON1 命令按钮IDC_BUTTON2 退出 图24,Step3:设计消息处理成员函数 使用MFC Class Wizard设计成员变量和消息处理函数。 (1)为对话框设置绑定相关控件的成员变量 - ID 变量名 变量类型值域 - IDC_EDIT1 m_num1 Value,double IDC_EDIT2 m_num2 Value,double IDC_STATIC1 m_show Value,Cstring 10 -,(2)在程序Calculator01Dlg.

10、cpp的首部定义一个可被各控件访问的全局变量: int opt; /运算符编号 (3)建立4个单选按钮的BN_CLICKED消息处理函数,用于确定运算。在各函数体中只需编写一个语句: OnRadio1( )函数中为:opt =1; /加法 OnRadio2( )函数中为:opt =2; /减法 OnRadio3( )函数中为:opt =3; /乘法 OnRadio4( )函数中为:opt =4; /除法 (4)建立“”命令按钮的BN_CLICKED消息处理函数OnButton1(),用于执行指定的算术运算并显示运算结果。 代码如下:,/TODO Add your control notific

11、ation handler code here double k; UpdateData(); switch(opt) case 1: k=m_num1+m_num2;break; case 2: k=m_num1-m_num2; break; case 3: k=m_num1*m_num2; break; case 4: if(m_num2!=0) k=m_num1/m_num2; else MessageBox(“除数为0!”,”计算器”); return; m_show.Format(“%10.3f”, k); UpdateData(FALSE);,MessageBox是系统函数,功能是

12、显示消息框。它有2个字符串型参数: 第一个是要显示的消息内容; 第二个是消息框的标题,可缺省。,(5)建立“退出”按钮的BN_CLICKED消息处理函数OnButton2( ),用于结束工程的运行。 为OnButton2()添加的代码如下: /TODO Add your control notification handler code here EndDialog(1); Step4:工程的编译、链接和运行 运行效果如图25。,对Csae2作如下修改:使用系统对话框MessageBox显示结果;增加如下功能:当连续三次输入错误密码,则拒绝再次输入,并输出“对不起,再见!”。,【Job3】,列

13、表框(ListBox)是一个列有若干可选项目的输入窗口,它允许用户从所列出的表项中进行单项或多项选择,被选择的项呈高亮度显示,并且一般带有一个垂直滚动条。 组合框(ComboBox)是由一个编辑框和一个列表框组成。用户既可以在编辑框中输入,也可以在列表框中选择一个表项来完成输入。,3.4 列表框和组合框控件,修改Case3,用一个列表框替换组框和四个单选按钮,如图26所示。 Step1: 建立一个对话框工程架构,工程名为:Calculator02 Step2: 除了列表框外,其余同Case3。 在列表框的属性对话框里,设置ID为:IDC_LIST1;在“样式”(Styles)选项卡中清除对“排

14、序”(Sort)选项的选择。如图27所示。,【Case4】简单计算器(2),Step3: (1)为对话框设置绑定相关控件的成员变量 除m_num1、m_num2和m_show外,再为列表框添加一个m_list变量,Control类,CListBox型。 (2) 建立对话框的WN_INITDIALOG消息函数OnInitDialog(),用于初始化列表框,添加的代码如下: /TODO Add extra initialization here m_list.AddString(“加”); m_list.AddString(“减”); m_list.AddString(“乘”); m_list.A

15、ddString(“除”); 列表框的成员函数AddString()的功能是在列表框中添加一个选项。,(3)建立列表框的消息处理函数 选择列表框IDC_LIST1的消息为“LBN_SELCHANGE”,其对应的函数是OnSelchangeList1(),添加代码如下: /TODO Add your control notification handler code here opt = m_list.GetCurSel()+1; 列表框的成员函数GetCurSel()的功能是获取列表框当前选项的序号,序号从0开始。 (4)建立“”按钮和“退出”按钮的消息处理函数, 同Calculator01工

16、程。,Step4:工程的编译、链接和运行 运行效果如图28所示。,【Job4】在Case4中增加两项运算:“开根号”和“乘幂”请完成工程Calculator03,Windows系统很多窗口都有附加的滚动条,便于用户浏览显示内容。作为控件的滚动条其使用方法和特性与窗口中附加的滚动条十分相似,但功能不同。 滚动条控件是一个输入数据的计数器控件,分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。,3.4 滚动条控件,水平和垂直滚动条的结构是一样的,两端都有一个滚动箭头按钮,中间有一个沿两端方向移动的滑块,在箭头按钮与滑块之间称之为

17、滚页区。有三种滚动操作: 单击箭头按钮:执行慢速滚动,也称步进滚动,滚动单位为1。 拖曳滑块:执行快速自由滚动。 单击滚页区:执行滚页,页长由用户设定,如10。 注意:滚动条通常部用于精确数据值的输入,而是作为可连续调整输入的工具。,本实例利用水平滚动条以及三基色(红、绿、蓝)原理设计一个简单调色板。 Step1: 由向导建立一个对话框工程架构,工程名为:Color Step2: 界面设计效果如图29。其控件基本属性如下所示:,【Case5】简单调色板,- 控件名ID 标 题 其他属性 - 静态文本 IDC_DRAW 默认 Client edge 组框 默认 红色 编辑框 IDC_RED 滚动

18、条 IDC_SCROLLBAR1 组框 默认 绿色 编辑框 IDC_GREEN 滚动条 IDC_SCROLLBAR2 组框 默认 蓝色 编辑框 IDC_BLUE 滚动条 IDC_SCROLLBAR3 命令按钮 IDC_BUTTON 退出 -,Step3: (1)为对话框设置绑定相关控件的成员变量: - 控件ID 成员变量名 变量类型 值域 - IDC_RED m_Red Value,int 0255 IDC_GREEN m_Green Value,int 0255 IDC_BLUE m_Blue Value,int 0255 IDC_SCROLLBAR1 m_Scroll1 Control,S

19、CrollBar IDC_SCROLLBAR2 m_Scroll2 Control,SCrollBar IDC_SCROLLBAR3 m_Scroll3 Control,ScrollBar -,(2)建立对话框的WN_INITDIALOG消息函数OnInitDialog(),用于对有关变量进行初始化。添加的代码如下: /TODO Add extra initialization here m_Red=m_Green=m_Blue=0; /置成员变量的初值 /设置滚动条的值域和当前位置 m_Scroll1.SetScrollRange(0,255); m_Scroll1.SetScrollPos

20、(m_Red); m_Scroll2.SetScrollRange(0,255); m_Scroll2.SetScrollPos(m_Green); m_Scroll3.SetScrollRange(0,255); m_Scroll3.SetScrollPos(m_Blue); UpdateData(FALSE);,(3)建立三个编辑框的ON_CHANGE消息函数On_ChangeRed() On_ChangeGreen() On_ChangeBlue() 用于接收成员变量的数据。这三个消息处理函数都只需添加一条语句: UpdateData(FALSE);,(4)建立对话框的WM_HSCROL

21、L消息函数On_Hscroll(),消息WM_HSCROLL是由滚动条发送的。 /TODO Add your control notification handler code here /接到红色滚动条的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR1) if(nSBCode=SB_THUMBPOSITION)m_Red=nPos; /滑块滚动 if(nSBCode=SB_LINELEFT ,/接到绿色滚动条的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR2) if(nSBCode=SB_THUMBPOS

22、ITION) m_Green=nPos; if(nSBCode=SB_LINELEFT ,/接到蓝色滚动条的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR3) if(nSBCode=SB_THUMBPOSITION) m_Blue=nPos; if(nSBCode=SB_LINELEFT /调用自定义成员函数,向调色板绘图,(5)为“退出”按钮的BN_CLICKED消息处理函数OnButton1()添加一调语句: EndDialog(1); (6)为对话框添加public型的成员函数void Draw(),用于调制静态文本框IDC_DRAW的颜色。在

23、VC+的“工程工作区”(左窗格)的“Class View”选项卡下,右击CcolorDlg再选择“Add member function”,在弹出的“添加成员函数”对话框中,先后输入函数的类型“void”和函数的名字“Draw”(如图30),按“确定”后在所显示的Draw函数框架内输入Draw函数的如下代码:,void CcolorDlg:Draw() /设置调色板 CWnd *pWnd=GetDlgItem(IDC_DRAW); /获取静态文本的ID CRect rcClient; /建立矩形对象 pWnd-GetClientRect(rcClient); /获取IDC_DRAW所占矩形区域

24、, /并转换为矩形对象 /建立绘图对象 CDC *pDC=pWnd-GetDC(); /获取当前设备环境对象句柄 CBrush drawBrush; /建立画刷,设置画刷颜色 drawBrush.CreateSolidBrush(RGB(m_Red,m_Green,m_Blue); /绘图 CBrush *pOldBrush=pDC-SelectObject( ,Step4:工程的编译、链接和运行 运行效果如图31所示。,前面设计的计算器都比较简单,与实际计算器有较大差别。仿真计算器模拟实际计算器的基本使用方法,即数值和运算符都通过按键按钮输入,如图32所示。该工程的用户工作量较大,可分期完成

25、。 第一期工程可只完成基本计算功能,如只实现“单一”计算功能,且不实现Backspace功能。,【Case6】仿真计算器,下面是第一期工程的设计过程。 Step1:建立工程架构 使用MFC AppWizard建立一个对话框工程, 工程名为:Calculator04 Step2:设计窗口界面 使用对话框编辑器设计工程的窗口界面。各控件的属性设置如下:,控件名ID 标题 其他属性 - 编辑框 IDC_EDIT1 Right 命令按钮 IDC_BUTTON0 0 命令按钮 IDC_BUTTON1 1 命令按钮 IDC_BUTTON2 2 命令按钮 IDC_BUTTON3 3 命令按钮 IDC_BUT

26、TON4 4 命令按钮 IDC_BUTTON5 5 命令按钮 IDC_BUTTON6 6 命令按钮 IDC_BUTTON7 7 命令按钮 IDC_BUTTON8 8 命令按钮 IDC_BUTTON9 9 命令按钮 IDC_BUTTONSIGN +/- 命令按钮 IDC_BUTTONDOT .,控件名ID 标 题 - 命令按钮 IDC_BUTTONEQU = 命令按钮 IDC_BUTTONADD 命令按钮 IDC_BUTTONSUB 命令按钮 IDC_BUTTONMUT 命令按钮 IDC_BUTTONDIV 命令按钮 IDC_BUTTONMOD % 命令按钮 IDC_BUTTON10 1/x 命

27、令按钮 IDC_BUTTONSQRT sqrt 命令按钮 IDC_BUTTONBKS Backspace 命令按钮 IDC_BUTTONCE CE 命令按钮 IDC_BUTTONQUIT Quit 对话框 默认 仿真计算器V1,Step3:建立消息映射和消息处理函数 (1)为对话框设置绑定编辑框控件的成员变量: 变量名为m_show,变量类型为Value,double (2)为对话框定义若干全局变量,在VC+的“工程工作区”(左窗格)的“File View”选项卡下,双击CCalculator03Dlg.cpp,在程序的首部处输入如下代码: int opt, decimal; double n

28、um, num1, right; 其中,opt用于存放运算符编号; decimal用于表示小数,0整数,1小数; num和num1分别存放当前运算数和第一运算数; right用于存放位权。,另外,为执行平方根计算在该程序首部添加: #include “math.h” (3)为对话框的初始化函数OnInitDialog()添加如下代码: / TODO: Add extra initialization here decimal=opt=0; m_show=num=num1=0; UpdateData(FALSE);,(4)建立数字按钮“0”到“9”的BN_CLICKED消息的处理函数。 为按钮”

29、1”的消息函数OnButton1()添加的代码: / TODO: Add your control notification handler code here if(decimal) num+=1*right; right /=10; else num=num*10+1; m_show=num; UpdateData(FALSE); 其他数字按钮的消息函数类似,只需把其中的1改成相应数字即可。,(5)建立小数点的BN_CLICKED消息的处理函数 OnButtondot(),添加代码如下: / TODO: Add your control notification handler code here decimal=1; right=1/10; (6) 建立“+/-”

温馨提示

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

评论

0/150

提交评论