WEO啦

首页 » 正文内容 » VC++60入门
VC++60入门
收录时间:2022-11-25 21:38:49  浏览:0
第七章 windows 标准控件第7章Windows标准控件精讲在前一章,已经学习了在一个对话框中增加控件,用户通过对话框中的控件与应用程序进行交互的方法,在这一章,主要详细讨论不同Windows标准控件的使用特性,你将学会静态控件、按钮控件、编辑框控件、列表框控件、组合框控件、滚动条控件的使用。7/1Windows标准控件概述7/1/1 Winodws 标准控件Windows系统提供的标准控件主要包括:静态控件、按钮控件、编辑框控件、列表框控件、组合框控件等,如表7-1所示。表7-1windows标准控件的类型类别MFC类控件类型静态控件CStaticStatic Text、Group Box按钮控件CButtonButton、Check Box、Radio Button编辑框控件CEditEdit Control组合框控件CComboBoxCombo Box列表框控件CListBoxList Box控件操作的学习要关注以下几个方面:1 控件的创建控件的创建形式分为静态创建和动态创建两种方式。静态创建是指在对话框模板创建控件,并设置控件的属性,这样,在调用该对话框时,窗口系统会自动按预先的设置为对话框创建控件,程序员可以使用ClassWizard为该控件在对话框类中创建一个控件类的对象。动态创建是指在程序的运行中根据需要,定义一个控件类的对象,再通过窗口函数CreateWindow()或CreateWindowEx()创建控件,函数ShowWindow()显示控件,正如操作一个子窗口。2 控件的属性设置每个控件都有一个属性集,对于静态创建的控件,可以在对话框模板中,打开控件的属性对话框直接设置控件的初始属性。在程序设计过程中,可以通过控件类对象调用方法设置控件的属性。3 控件消息类别表7-1中所列出的控件中,静态控件不发送消息,其它控件对于用户的操作都能发送消息,不同类的控件发送的消息类别是不相同的,可以使用ClassWizard为控件映射各种消息处理函数。4 控件对象的常用方法MFC控件类提供丰富的方法函数,帮助程序员操作控件对象。5 用户输入消息的获取和响应在前一章已经介绍了MFC支持应用程序与用户之间的通讯的方法,为控件的显示值映射一个对话框类的成员变量,再通过对话框数据交换和校验机制实现在对话框打开和关闭的时候传递数据,在程序运行过程中,通过UpdateData()函数主动地控制数据在控件显示和成员变量之间交换。这是MFC应用程序获取用户输入消息的获取的主要方法。同时MFC保留了Windows API函数,直接通过控件ID操作控件,获取或设置控件的显示值。例如SetDlgItemText()和GetDlgItemText()函数可以用于设置或获取编辑框的显示文本串。7/1/2控件的通用属性Windows标准控件的属性窗口通常由三个属性标签构成。1 General标签页General 标签页中设置常规属性,通常包括:(1) ID程序通过控件ID来访问一个控件。所有的控件中,只有Static Box控件和Group Box控件的ID是可以重复,一般使用默认设置IDC_STATIC,而其它控件的ID在一个应用程序中应该是唯一的。 (2) Visible设置对话框打开时控件是否是可见的。它的类型是布尔类型。默认为TURE,即运行程序时显示控件。(3) Disabled设置当对话框在打开时该控件是否是不可用的,它的类型是布尔类型,默认为FALSE。(4) Group标记一组控件中的第一个控件。(5) Tap stop设置TAB键是否可以该控件上驻留,它的类型是布尔型,默认值为TURE。(6) Help ID分配一个帮助ID给一个控件。这一个帮助ID是建立在资源ID基础上的。它的类型是布尔型,默认为FALSE。2 Styles标签页Style标签页通过设置一些与控件风格有关的属性,不同的控件所设置的属性不相同,在本章的后续小节中将按不同的控件介绍。3 Extend Styles标签页Extent Styles标签面设置与显示风格有关的属性,通常包括:(1) Client edge围绕对话框建立一个有下凹风格的边框。它的类型是布尔型,默认值是FALSE。(2) Static edge围绕对话框建立一个边框。它的类型是布尔型,默认值是FALSE。(3) Modal frame该选项提供一个3D框架。(4) Transparent使用这种风格的窗口在层叠状态下是透明的,它的类型是布尔型,默认值是FALSE。(5) Accept files有这种风格的对话框接受拖放文件操作。如果用户拖放一个文件到此对话框上,一个WM_DROPFILES消息将要发送到这个控件上。它的类型是布尔型,默认值是FALSE。(6) Right aligned text指定在一个对话框中文本是右对齐的。它的类型是布尔型,默认值是FALSE。(7) Right-to-left reading order对话框的文本是按从右到左的顺序编排的,这是为了方便一些其他的语言的阅读方便而设置的(如***语言)。它的类型是布尔型,默认值是FALSE。7/1/3常用控件窗口操作函数 窗口应用程序对控件的操作实质上是对窗口的操作,对话框窗口中的控件被视为对话框窗口的子窗口,具有通用的窗口属性,所以控件的操作还可是通过一组操作窗口的函数来完成的。常用的控件子窗口操作函数有:1 CreateWindow()或CreateWindowEx()在程序运行过程中,可以通过调用创建窗口的函数来动态地创建控件,创建窗口的函数是CreateWindow()或CreateWindowEx()。2 ShowWindow()使用函数ShowWindow()可以显示或隐藏控件。它的函数原型为:BOOLShowWindow(int nCmdShow)/参数nCmdShow表示窗口的显示特性,例如,取值SW_HIDE表示隐藏控件,取值SW_SHOW表示显示控件。3 EnableWindow()通过函数EnableWindow()可以激活或禁止控件接受用户输入。它的函数原型为:BOOLEnableWindow(BOOL nEnable=ture)/参数nEnable决定控件的激活或禁止状态,当值为ture时,控件允许接受用户输入,当其值为fals时,控件不允许接受用户输入,呈灰色显示。4 MoveWindow()通过函数MoveWindow()可以移动控件或改变控件的大小。函数的原型如下:BOOL MoveWindow(int x/int y/int nWidth/int nHeight/BOOL bRepaint=TRUE)/坐标x/y决定控件所在的位置,nWidth和nHeight决定控件的大小,bRepaint表明对话框窗口移动后,控件是否需要重画,与对话框窗口的相对位置与大小保持不变。5 DestroyWindow()通过该函数能够关闭一个控件,该函数的原型为:void DestoyWindow()/7/2 CStatic类控件的使用在程序中出现的文本根据作用的不同,可以分为两大类:静态文本和动态文本。静态文本在程序的执行中保持不变,主要用来表示控件的功能、下一步执行的操作等。动态文本在程序执行过程中是可以改变的,在Windows中通过可以通过编辑控件来实现。MFC中使用CStatic类来管理静态文本控件,包括StaticText控件和Group Box控件,StaticText控件通常用来标识一个控件,Group Box通常用来分割不同组别的控件。一般情况下,静态控件不接受用户输入,也不发出消息。它的ID号默认为IDC_STATIC,只有CStatic类的控件的ID号是可以重复的。7/2/1 Static Text控件用户能添加到对话框中的最简单控件是静态文本控件。静态文本控件不要求与对话框进行交互, 需要显示的文本串只要在该控件属性对话框的General标签中的Caption属性中直接输入。对静态文本,可以在Styles标签页中设置文本的显示风格,设置属性解释如下:1 Align text控制静态文本控件中文本的对齐方式。可能的取值有Right(右对齐),Left(左对齐),Center(居中),当No wrap选项选中时,这个选项设置为Left,它的默认值为Left。2 Center vertically在静态文本控件中垂直方向上居中。它的类型是布尔型,默认值是FALSE。3 No prefix禁止文本中的“&”解释为它后面的字符有一个下划线,直接将它作为文本的一部分进行显示。No prefix选项经常在显示包含“&”的文件名或字符串中用到。4 No wrap前提条件是文本必须是左对齐的。在这种选项下Tabs是可扩展的,但是单词是不能被完整保护的。在行的末尾扩展处的那一部分将被剪切掉。它的类型是布尔型,默认值是FALSE。5 Simple 此选项将禁用No wrap和Align text选项。在静态文本控件中的文本如果有此属性,就不保护单词的完整性,且不保证不被剪切。它的类型是布尔型,默认值是FALSE。6 Notify此选项表示当一个控件被选中或双击时,要通知父窗口。此选项的类型是布尔型,默认值是FALSE。7 Sunken此选项表示围绕静态文本控件的文本,建立一个凹下的边框。它的类型是布尔型,默认值是FALSE。8 Border此选项表示围绕静态文本控件的文本,建立一个边框。它的类型是布尔型,默认值是FALSE。7/2/2 Group Box控件Group Box 的作用与Static Text的类似,主要是用于标识控件的作用,它更多能用于成组控件的标识,例如,如图7-1所示,一组用于选择性别的单选按钮,一组用于表示兴趣爱好的复选框按钮。Group Box的Styles标签页的属性设置更为简单:1 Horizontal alignment此选项用于设置Group Box 中文本串显示的水平对齐位置,在下拉列表中提供了四个选项:Default,Right,Left,Center,默认选项为Default,表示左对齐。2 Icon此选项表示使用图标表示作标识,代替文本串。3 Bitmap此选项表示使用位图表示作标识,代替文本串。4 Notify此选项这表示当一个控件被选中或双击时,要通知父窗口。此选项的类型是布尔型,默认值是FALSE。5 Flat此选项设置Group Box的线条显示风格。图7-1静态控件示例7/3 CEdit类控件的使用编辑控件用于必须获取文本的时候,例如,在对话框内输入名字或数字时,由编辑控件获取此信息。编辑控件是用来存储用户输入的***格式文本的窗口,它可以分为单行编辑控件和多行编辑控件。单行编辑控件是用于单行文本输入的控件,多行文本编辑控件是用于多行文本输入的控件。在多行编辑控件中经常使用滚动条,从而能输入比能显示的文本更多的文本。事实上,Windows中的记事本(Notepad)应用程序就是一个带有控件菜单的编辑控件。每个编辑控件都提供了内置编辑能力,因此可以使用多行编辑控件来创建一个简单的文本编辑器。所有的编辑控件都支持特定的编辑功能,而不需要任何附加编程。在剪贴板中用到的粘贴命令在编辑控件中照常可以使用,表7-2中列出了编辑控件可以使用的编辑命令。表7-2 编辑控件可以使用的编辑命令命令击键用 途CutCtrl+X对编辑控件中选中的文本进行删除,并将文本复制到剪贴板中。CopyCtrl+C将当前选中的文本复制到剪贴板中。PasteCtrl+V将剪贴板中的文本插入到编辑控件中的当前光标位置处。UndoCtrl+Z取消对编辑控件中的文本所做的最后一次修改。编辑框控件能够发送WM_NOTIFY消息到对话框窗口,并告诉对话框窗口用户对编辑框控件所做的操作,编辑框控件能够处理的消息类别如表7-3所示:表7-3编辑框控件的消息类别消息类别发生事件EN_CHANGE输入框中的文本串被修改EN_ERRSPACE输入的文本串超过了输入框的显示范围EN_HSCROLL按下水平滚动钉EN_KILLFOCUS输入框失去焦点,也就是输入转移到其它对象EN_MAXTEXT输入的文本串超过了设定的输入最大长度EN_SETFOCUS输入框获取焦点EN_UPDATE更新显示内容EN_VSCROLL按下垂直滚动条使用ClassWizard可以为一个编辑框控件的ID值映射一个对话框的成员变量,通过对话框的数据交换机制,方便地获取用户输入的内容,或把应用程序的响应结果输出到编辑框。成员变量的数据类型可以设为CString、int、UINT、long、DWORD、float、double、BYTE、short、BOOL、COleDateTime、COleCurrency,方便程序员在不同应用情况下的数据处理。7/3/1属性设置通过在Styles标签页,可以得到不同类型的输入框样式:多行输入框、密码输入框,只读输入框,大小写转换输入框、数字输入框等等。具体的设置项如图7-2所示:图7-2 Edit控件属性对话框Styles选项卡1 Align text控制编辑控件中文本的对齐方式。可能的取值有左对齐、居中和右对齐。2 Multiline定义该编辑控件为多行文本编辑。通常情况下,该选项不被选中。3 Number限定用户输入的只能是数字。4 Horizontal scroll在多行编辑控件中提供一个水平滚动条。缺省时该选项不被选中。5 Auto HScroll当用户在编辑框的右边输入字符时,文本自动进行滚动。该选项通常被选中。6 Vertical scroll在多行编辑控件中提供一个垂直滚动条。缺省时该选项不被选中。7 Auto VScroll在多行编辑控件中,当用户在最后一行键入回车键时,提供自动向下滚动。缺省时,该选项不被选中。8 Password当用户在编辑控件中输入字符时,在编辑框中不再显示输入的文本,而是相同数量的“*”字符。这一选项在多行编辑控件中是不能使用的。缺省时不被选中。9 No hide selection当编辑控件失去或重新获得焦点时,该项设置将改变文本的显示方式。当No hide selection设置为“真”时,在编辑框中选择的文本好象总是在选中。缺省时不被选中。10 OEM convert在用户输入上进行从Windows字符集到OEM字符集的转化,这样可以使AnsiToOem在被调用时正常工作。缺省时不被选中。11 Want return应用于多行编辑控件。该选项允许编辑控件输入Enter击键,以使Enter击键不影响对话框的默认按钮。12 Border为控件创建边界,该选项缺省时被选中。13 Uppercase将所有的输入转化为大写字符,缺省时不被选中。14 Lowercase将所有的输入转化为小写字符,缺省时不被选中。15 Read-only禁止用户在编辑控件中输入或修改,缺省时不被选中。与静态文本的扩展属性相比,编辑框的扩展属性只增加了一项Left scroll bar,如果设置了垂直滚动条,这一项决定了滚动条在客户区的左边。它的类型是布尔型,缺省情况下为不选中。7/3/2常用方法编辑框控件的默认模式是在一行显示所有编辑文本,表7-4是通用CEdit类的方法。表7-4 通用CEdit类的方法方法说 明CanUndo()决定一个编辑操作是否可以撤销Clear()从编辑控件中删除当前的选择(如果有的话)Copy()将编辑控件当前的选择(如果有的话)以CF_TEXT格式复制到剪贴板中Cut()剪下编辑控件中的当前选择(如果有的话)并以CF_TEXT格式复制到剪贴板中EmptyUndoBuffer()消除一个编辑控件的“撤销”标志GetFirstVisibleLine()确定编辑控件中的最上面的可视行GetModify()确定一个编辑控件的内容是否可修改GetPasswordChar()当用户输入文本时,获得编辑控件中显示的密码字符GetRect()获得一个编辑控件的格式化矩形GetSel()获得编辑控件中当前选择的开始和结束字符位置LimitText()限定用户可能输入一编辑控件的文本长度LineFromChar()获得包含指定字符下标的行的行号LineLength()获得编辑控件中的一行的长度LineScroll()滚动多行编辑控件的文本Paste()将剪贴板的数据插入到编辑控件作当前的光标位置,只有当前剪贴板中数据格式为CF_TEXT时方可插入ReplaceSel()用指定文本替代编辑控件中当前选择的部分SetModify()设置或清除编辑控件的修改标志SetPasswordChar()当用户输入文本时设置或删除一个显示于编辑控件中的密码字符SetReadOnly()将编辑控件设置为只读状态SetSel()在编辑控件中选择字符的范围Undo()取消最后一个编辑控件操作当编辑框控件具有ES_MULTILINE样式时,多行编辑框控件支持在编辑窗口进行多行文本编辑,表7-5中是多行编辑所支持的CEdit类的方法。表7-5 CEdit类提供的支持多行编辑的方法方法说 明FmtLines()设置在多行编辑控件中包含软分行符GetHandle()获得当前分配给一个多行编辑控件的内存的句柄GetLine()从一编辑控件中获得一行文本GetLineCount()获得多行编辑控件的行数LineIndex()设置多行编辑控件中一行的字符下标SetHandle()设置多行编辑控件将要用到的句柄SetRect()设置多行编辑控件的格式化矩形并更新控件SetRectNP()设置多行编辑控件的格式化矩形并且不重绘控件窗口SetTabStops()在多行编辑控件中设置制表(tab)位7/3/3编程实例【例7-1】编写一个用户登录的应用程序,如图7-3所示,应用程序维护着一张合法用户的用户名和密码,只有合法用户才能通过登录程序。要求如下:(1) 用户名输入后,转换为大写字母显示,最大长度不能超过10位。(2) 密码以“*”代替显示,密码只能是6位数字。(3) 按“确定”时,需要检查输入框不能为空,且输入是否符合要求,否则返回输入框重新输入。(4) 合法用户显示欢迎对话框,不合法用户显示警告对话框。图7-3Exam7_1运行图1 创建基于对话框的MFC应用程序Exam7_1,并把对话框的Caption改为”用户登录”2 在对话框模板中创建控件并设置控件属性(1) 在工作区选择ResourceView标签页,在Dialog文件夹选择IDD_EXAM7_1_DIALOG,打开对话框模板。(2) 按图7-3添加静态文本控件和编辑框控件。(3) 设置用户名编辑框,ID为IDC_USER,在Styles标签页选中Uppercase属性。(4) 设置密码编辑框,ID为IDC_PWD,在Styles标签页选中Number和Password属性。(5) 设置IDC_USER的TAB Order为1,IDC_PWD的Tab Order为2。3 创建一张合法用户的用户名和密码的列表(1) 在CExam7_1Dlg类中添加CString类公有成员变量,二维数组userlist52,可以存放5个用户的用户名和密码。(2) 在CExam7_1Dlg类的构造函数中输入5个用户的用户名和密码,用户名要求全部大写,密码长度为6,例如:userlist00=MARY/userlist01=123456/4 使用ClassWizard为控件映射对话框成员变量,设置完毕如图7-4所示(1) 为IDC_USER映射两个成员变量,一个是Value类的CString型变量m_user,另一个是Control类的CEdit对象m_EditUser。并设置m_user的校验机制的最大长度为10。(2) 为IDC_PWD映射两个成员变量,一个是Value类的CString变量m_pwd,另一个是Control类的CEdit对象m_EditPwd。并设置m_pwd的校验机制的最大长度为6。图7-4 为控件映射对话框成员变量5 单击“确认”按钮时,进行输入框合法检查和用户登录响应。(1) 为“确认”按钮在CExam7_1Dlg类映射BN_CLICKED消息处理函数OnOK()。(2) 在OnOK()函数中添加代码,进行输入框合法检查和用户登录响应,实现代码如程序清单7-1所示。程序清单7-1: OnOK()函数代码void CExam7_1Dlg/OnOK() / TODO/ Add extra validation hereUpdateData(true)//更新控件值变量if(m_user/IsEmpty()/检查用户名不能为空AfxMessageBox(用户名不能为空,请输入)/ m_EditUser/SetFocus()/ / 焦点返回用户名输入框else if(m_pwd/IsEmpty()/检查密码不能为空AfxMessageBox(密码不能为空,请输入)/ m_EditPwd/SetFocus()// 焦点返回密码输入框else /检查密码长度必须为6位int len=m_EditPwd/LineLength()//取得密码长度 if(len!=6)AfxMessageBox(密码必须为6位,请重新输入)/ m_EditPwd/SetFocus()/ else /核对用户名和密码是否合法 for(int i=0/iResource插入一个新的对话框,在资源管理器中编辑对话框(1) 按图7-9添加三个Radio Button控件,一个Edit Box控件,默认系统设置的ID号。(2) 设置radio1按钮选中Group属性。(3) 设置三个Radio Button按钮的Tab Order连续。3 双击新对话框,创建对话框类CRadioButtonDlg4 为控件在对话框类中创建成员变量(1) 为编辑框控件IDC_EDIT1创建值类型公有成员变量,CString类型变量m_edit。(2) 为单选按钮成组控件IDC_RADIO1创建值类型公有成员变量,int类型变量m_radio。5 为对话框添加成员函数,实现相应功能(1) 使用ClassWizard为三个单选按钮在CRadioButtonDlg类中映射BN_CLICKED消息处理函数,分别为OnRadio1(),OnRadio2(),OnRadio3()。(2) 为三个按钮消息处理函数添加代码,实现当单击该按钮时,在编辑框中输出提示信息。程序代码如程序清单7-5所示。程序清单7-5: 单选按钮按键消息处理函数void CRadioButtonDlg/OnRadio1() / TODO/ Add your control notification handler code here m_edit=radio1 has been selected / m_radio=0/ UpdateData(false)/void CRadioButtonDlg/OnRadio2() / TODO/ Add your control notification handler code herem_edit=radio2 has been selected /m_radio=1/UpdateData(false)/void CRadioButtonDlg/OnRadio3() / TODO/ Add your control notification handler code here m_edit=radio3 has been selected /m_radio=2/UpdateData(false)/6 文档类创建变量并初始化(1) 在文档类CExam7_3Doc创建int型公有成员变量m_radsel,用于接收对话框传回的单选按钮的选择序号。(2) 在文档类的构造函数中为m_radsel赋初值为0。7 调用对话框(1) 在“查看”菜单下添加菜单项“单选按钮”,菜单项ID为ID_VIEW_RADIOBUTTON。(2) 使用ClassWizard为菜单项ID_VIEW_RADIOBUTTON在文档类CExam7_3Doc中映射WM_COMMAND消息处理函数,得到OnViewRadiobutton()函数。(3) 在文档类CExam7_3Doc的实现文件(/cpp)中添加:#include“RadioButtonDlg/h”预编译语句。(4) 在OnViewRadiobutton()添加代码,调用RadioButton对话框,实现代码如程序清单7-6所示。程序清单7-6:调用RadioButton对话框void CExam7_3Doc/OnViewRadiobutton() / TODO/ Add your command handler code hereCRadioButtonDlg dlg/dlg/m_radio=m_radsel//初始化对话框成员变量 if(dlg/DoModal()=IDOK) /调用对话框 m_radsel=dlg/m_radio/ /取得对话框中选择单选按钮的序号 UpdateAllViews(NULL)/ /更新视图 8 修改OnDraw()函数,在视图中输出单选按钮的选择状态。实现代码如程序清单7-7所示程序清单7-7:视图输出的OnDraw()函数 void CExam7_3View/OnDraw(CDC* pDC)CExam7_3Doc* pDoc = GetDocument()/ASSERT_VALID(pDoc)// TODO/ add draw code for native data hereCString radstr/radstr/Format( 选择了第%d个按钮/pDoc-m_radsel +1)/ pDC-TextOut (0/0/radstr)/9 编译运行应用程序。执行菜单命令“查看-单选按钮”,弹出RadioButton对话框。运行如图7-10所示(1) 选择不同的单选按钮,观察编辑框的显示。(2) 关闭对话框,观察视图的输出。(3) 再次打开对话框,观察控件的初始状态。图7-10 Exam7_3的运行效果图7/4/4复选按钮复选按钮与单选按钮一样,是Windows提供的又一种形式的按钮。使用复选按钮,从一组选项中选择一个选项或多个选项,各个选项之间的选中状态互不相关。使用ClassWizard可以为每一个复选框按钮在它所在的对话框类中添加一个值类型的成员变量用于传递数据,该变量的值是BOOL型,值为true时表示选中复选框,值为false时表示不选中复选框。 MFC同样支持Win32 API函数对复选框的操作,函数CheckDlgButton ()设置一个复选框的选中状态,函数原型为:CDialog/CheckDlgButton(int nIDButton/UNIT nCheck)/该函数包括二个参数,第一个参数是复选框按钮的ID,第二参数设置按钮的选中状态,值为BST_CHECKED或1时表示选中,值为BST_UNCHECKED或0时表示按钮不选中。【例7-4】通过一个简单CheckBox对话框,来说明如何使用复选框。对话框中,增加三个复选框和一个编辑框,当用户选中了一个或几个复选框时,在编辑框中报告用户所选中的复选框。CheckBox对话框的一个运行结果如图7-11所示。图7-11 CheckBox对话框的一个运行结果1 继续在Exam7_3中添加一个新的对话框IDD_DIALOG2(1) 在资源管理器中编辑对话框。按图7-11添加三个Check Box控件,一个Edit Box控件,默认系统设置的ID号。(2) 双击新对话框,创建对话框类CCheckBoxDlg。2 为控件在对话框类中创建成员变量(1) 为编辑框控件IDC_EDIT1创建值类型公有成员变量,CString类型变量m_edit。(2) 为三个复选框控件创建值类型公有成员变量,BOOL类型变量m_check1,m_check2和m_check3。3 为对话框添加成员函数,实现功能(1) 使用ClassWizard为三个复选框按钮在CCheckBoxDlg类中映射BN_CLICKED消息处理函数,得到函数OnCheck1(),OnCheck2(),OnCheck3()。(2) 在工作区的ClassView标签中,右键单击CCheckBoxDlg类执行菜单命令Add Member Function,增加一个私有类型的成员函数CheckState(),无返回值无参数,作用是检查复选框的选中状态,在编辑框中输出信息。实现代码如程序清单7-8所示:程序清单7-8: CheckState函数实现代码 void CCheckBoxDlg/CheckState()m_edit=None of checkbox has been selected/if(m_check1) m_edit=Check1 has been selected/if(m_check2) m_edit=Check2 has been selected/if(m_check3) m_edit=Check3 has been selected/if(m_check1&m_check2)m_edit=Check1 and Check2 have been selected/if(m_check1&m_check3)m_edit=Check1 and Check3 have been selected/if(m_check2&m_check3)m_edit=Check2 and Check3 have been sele
温馨提示:
1. WEO啦仅展示《VC++60入门》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.weo.la/doc/3134cb2d3a8661fc.html 复制内容请保留相关链接。