第六课 控件
在上一课中,同学们已经接触到了一些常用的控件。控件实际上是子窗口,在应用程序与用户进行交互的过程中,控件是主要角色。因此,有必要对控件进行详细的讨论。
Windows提供了五花八门的标准控件,这些控件可粗分为两类。一类是在Windows 3.x就已支持的传统控件,一类是Windows 95/NT支持的新型Win32控件。Windows提供控件的目的就是方便程序与用户的交互。应用程序应该根据自己的实际情况,选择合适的控件。
不管是什么类型的控件,一般都具有WS_CHILD和WS_VISIBLE窗口风格.WS_CHILD指定窗口为子窗口,WS_VISIBLE使窗口是可见的.另外,大部分控件还具有WS_TABSTOP风格,WS_TABSTOP使控件具有Tabstop属性.
MFC提供了大量的控件类,它们封装了控件的功能。通过这些控件类,程序可以方便地创建控件,对控件进行查询和控制。所有的控件类都是CWnd类的直接或间接派生类.
在学习这一讲之前,有几个问题需要先行说明:
在本节中,同学们会经常遇到控件类的Create成员函数,该函数负责创建控件.在上一章中同学们已经试验过,只要把控件放入对话框模板中,在调用DoModal或Create创建对话框时,框架会根据模板资源中的信息自动地创建控件。但有时需要用手工动态地创建控件,这通常需要按下面的步骤进行:
构建一个控件对象。
调用控件对象的成员函数Create来创建控件。
在6.3节中将对控件的创建进行详细讨论。
在上一章中,介绍了用ClassWizard为对话框类创建与传统控件对应的成员变量的方法.成员变量可以是数据变量或控件对象.需要指出的是,对于新的Win32控件,只能创建控件对象,不能创建数据变量.
在控件类的函数说明中,读者会经常看到LPCTSTR参数类型,LPCTSTR是一个宏,相当于const char far *,它用来说明指向常量字符串的指针.MFC的字符串类CString定义了一个与LPCTSTR同名的操作符,该操作符可以把一个CString对象转换成一个常量字符串.因此,如果函数的参数是用LPCTSTR来说明的,则既可以向该参数传递一个指向常量字符串的指针,也可以传递一个CString对象.
这一讲将对一些常用的控件及其控件类进行较详细的讨论,讨论的侧重点包括控件的创建、控件类的成员函数以及控件的通知消息。具体讲,本章主要包括以下主要内容:
传统控件
新型Win32控件
控件的技术总结
在非对话框窗口中使用控件
如何设计新的控件
小结