Windows编程基础1本课程旨在向学员介绍:1)掌握编辑框和普通按钮的使用2)掌握单选按钮和复选框的使用3)掌握列表框和组合框等控件的使用时间:学时9教学方法:讲授+课上练习+课下作业第五章Windows常用控件的使用2•关于控件:–对话框和控件是密不可分的。
–控件类从CWnd类派生过来的,所以他们实际上也是窗口,所以我们可以动态的创建他们,应该说掌握了这些控件,就可以解决大部分界面设计的要求了–控件担负着与用户交互的责任,比如按下按钮,显示图片等,按键的外观是由其属性决定的,在编辑对话框时,我们可以对某一个控件属性进行修改。
3控件类控件类静态文本CStatic单选按钮CButton图片控件CStatic组框CButton编辑框CEdit组合框CComboBox命令按钮CButton列表框CListBox复选框CButton滚动条CScrollBar45控件的创建•控件的创建分为静态创建和动态创建两种方式–静态创建 - 在对话框模板中创建控件–动态创建 - 程序的运行中定义一个控件类对象,再通过Create 函数进行创建6控件的访问•访问控件一般有3种方法 :–利用对话框的数据交换功能访问控件•适用于静态创建的控件,通过调用UpdateData ()函数,实现对话框和控件的数据交换。
–通过控件对象来访问控件–利用CWnd 类的成员函数来访问控件关于General属性•ID: 程序通过控件ID来访问一个控件。
所有的控件中,只有Static Box控件和Group Box控件的ID是可以重复,一般使用默认设置IDC_STATIC,而其他类控件的ID在一个应用程序中应该是惟一的控件可见性标识一组中第一个控件分配帮助ID给控件7静态文本控件•静态控件用来显示文本串或图形信息的控件,•包括下列两种控件–静态文本控件,不要求与对话框交互,需要显示的内容在Caption中给出。
(注意属性)–图片控件,用来显示边框、矩形或位图等图形。
•注意:–所有静态控件默认的ID标识都为IDC_STATIC,如果需要在程序中区分和操纵各个不同的静态控件,必须重新为它指定一个惟一的ID标识89静态文本控件显示风格Align text :控制静态文本控件的对齐方式Center vertically :设置垂直方向居中显示No prefix :”&”作为文本内容的一部分Simple :禁止 No wrap 和Align textNotify :控件被选中时,有相应消息发给父窗口Sunken :使静态文本框凹陷显示Border:使静态文本框带边框10图片控件显示风格•用来显示边框、矩形、或位图等图形。
编辑时,首先必须创建位图或图标资源,即要插入一个Bitmap (位图)或Icon (图标)图片类型,可以选择图片类型,可以选择Frame(Frame(Frame(框框)、Rectangle(Rectangle(矩形区域矩形区域矩形区域))、Icon(Icon(图图标)、Bitmap(Bitmap(位图位图位图))、Enhanced Metafile(Enhanced Metafile(增强图元文件增强图元文件增强图元文件)) 设置设置Frame Frame Frame和和Rectangle Rectangle的颜色的颜色 Icon Icon类型和类型和BitMap BitMap设置设置设置 ID ID值值11•可以通过Create 函数来动态的创建文本框•成员函数 Create–BOOL Create ( LPCTSTR lpszText , DWORD dwStyle , const RECT & rect , CWnd * pParentWnd ,UINT nID = 0xffff );–lpszText :指定控件显示正文–dwStyle :静态正文控件的风格,如WS _VISIBLE ,WS _DISABLED …–rect 为控件的引用,指定位置和尺寸。
–pParentWnd :指向父窗口,不能为NULL–nID :控件ID12CStatic m_MyStatic; //定义成员变量m_MyStatic.Create(_T(“my static”), WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(10,10,150,50),th is);CStatic m_MyStatic; //定义成员变量m_MyStatic.Create(_T(“my static”), WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(10,10,150,50),th is);•创建CStatic 对象•CStatic 类常用的成员函数:–SetBitmap :设置要在静态控件上显示的位图。
–SetIcon :设置要在静态控件上显示的图标。
–SetCursor :设置要在静态控件上显示的光标。
–SetEnhMetaFile : 设置要在静态控件上显示的元文件。
控件-编辑框•编辑框控件可以接受用户的输入和文本编辑.在编辑框中,用户可以输入文字、数字,并能用剪切、粘贴、拷贝、删除等操作来编辑用户的输入,编辑框既可以是单行的,也可以是多行的•当该控件获得焦点时,在其编辑框的内部会出现一个闪烁的光标,编辑框控件只能接受纯文本形式的输入。
13•Align Text:控件对齐方式•Multiline:多行显示,通常不使用•Number:限定只输入数字•Horizontal scroll:多行下有效,提供水平滚动条•Auto HScroll:当在编辑框最右端输入字符时,提供滚动支持1415•Vertical scroll :多行编辑下提供垂直滚动条•Auto VScroll :当到最下一行时如果按回车提供垂直滚动显示功能•Password :不显示输入字符,显示的是”*”•No hide selection :使编辑框文本保持选择状态显示•OEM convert :从Windows 字符集转换到OEM 字符集•Want Return :Enter键换行16•对应的控件类是CEdit•成员函数 Create–BOOL Create ( DWORD dwStyle , const RECT & rect , CWnd * pParentWnd , UINT nID );–dwStyle :控件的风格,如WS _CHILD , WS _DISABLED …–rect 为控件的引用,指定位置和尺寸。
–pParentWnd :指向父窗口,不能为NULL –nID :控件ID17CEdit* pEdit = new CEdit;pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP |WS_BORDER, CRect(10, 10, 100, 100), this, 1);CEdit* pEdit = new CEdit;pEdit->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP |WS_BORDER, CRect(10, 10, 100, 100), this, 1);•创建CEdit 对象•CEdit 类常用的成员函数:–GetSel :获得编辑框控件中当前选择的其始字符和终止字符的位置。
–SetSel :选择编辑框控件中的一个字符范围。
–GetLineCount :获得多行编辑框的行数。
18•CEdit 类常用的成员函数(续)–CanUndo : 决定一个编辑框操作是可以撤销–GetPasswordChar : 获得编辑框中的密码字符。
–SetReadOnly :将编辑框中的控件设置为只读状态19编辑框的消息•EN _CHANGE :当编辑框中的文本已被修改,在新的文本显示之后发送。
•EN _HSCROLL :当编辑框的水平滚动条被使用,在更新显示之前发送。
•EN _KILLFOCUS :当编辑框失去焦点时发送。
•EN _MAXTEXT :文本数目到达限定值时发送。
•EN _UPDATE :编辑框中的文本已被修改,在新文本显示之前发送。
•EN _VSCROLL :当编辑框的垂直滚动条被使用,在更新显示之前发送。
CButton类型的控件•按钮控件用于响应用户的鼠标事件,按钮包括命令按钮(Pushbutton)、检查框(Check Box)、单选按钮(Radio Button)、组框(Group Box)和自绘式按钮(Owner-draw Button)。
用于在一组互相排斥的选项中选择其中一项用于在一组选项中选择其中一项或多项2021按钮风格设计•Default Button :会在按钮的周围显示黑框,当启动对话框缺省执行的功能•Owner draw :自己绘制按钮是需要调用CWnd ::OnDrawItem ,需要使用这个选项22关于单选按钮使用•单选按钮由一个圆圈和紧随其后的文本标题组成,当它被选中时,圆圈中就标上一个黑点。
•通常将一组单选按钮放在一个组框控件中,在一组单选按钮中,第一个(Tab 键顺序)按钮最重要,其ID 值可用于在对话框中为控件建立关联的成员变量。
必须为同组中的第一个单选按钮设置Group 属性,而同组的其他单选按钮不可再设置Group 属性。
23关于复选按钮和组框使用•复选按钮:由一个空心方框和紧随其后的文本组成,当它被选中时,空心方框中就加上一个“√”或“×”标记。
不同于单选按钮,在一组复选框中每次可以同时选择多项.•组框:用来显示一个文本标题和一个矩形边框,通常用来作为一组控件周围的虚拟边界,并将一组控件组织在一起24•1、成员函数 Create–BOOL Create ( LPCTSTR lpszCaption , DWORD dwStyle , const RECT & rect , CWnd *pParentWnd , UINT nID );–lpszCaption :按钮正文–dwStyle :了控件的风格,如WS _CHILD , WS _DISABLED …–rect 为控件的引用,指定位置和尺寸。
–pParentWnd :指向父窗口,不能为NULL–nID :控件ID25CButton m_MyButton1, m_MyButton2, m_MyButton3;// 创建一个普通命令按钮m_MyButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(10,10,100,30), this, 1);// 创建一个单选按钮m_MyButton2.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,CRect(10,40,100,70), this, 2);// 创建一个复选框m_MyButton3.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,CRect(10,100,100,130), this, 4);CButton m_MyButton1, m_MyButton2, m_MyButton3;// 创建一个普通命令按钮m_MyButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON ,CRect(10,10,100,30), this, 1);// 创建一个单选按钮m_MyButton2.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON ,CRect(10,40,100,70), this, 2);// 创建一个复选框m_MyButton3.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX ,CRect(10,100,100,130), this, 4);•创建CButton 对象•GetState:获得按钮控件的状态。