标题：控件
概述
1、控件应用 
使用现成的控件来开发应用程序时，控件工作在两种模式下：设计时态和运行时态。 
在设计时态下，控件显示在开发环境下的一个窗体中。设计时态下控件的方法不能被调用，控件不能与最终用户直接进行交互操作，也不需要实现控件的全部功能。 
在 运行状态下，控件工作在一个确实已经运行的应用程序中。控件必须正确地将自身表示出来，它需要对方法的调用进行处理并实现与其他控件之间有效的协同工作。 
2、控件创建 
创建控件就是自行设计制作出新的控件。 
设计控件 是一项繁重的工作。自行开发控件与使用控件进行可视化程序开发存在着极大的不同，要求程序员精通面向对象程序设计。 
设计控件是一项艰苦的工作。对于控件的开发者，控件是纯粹的代码。实际上，创建新控件使我们回到传统开发工具的时代。虽然这是一个复杂的过程，但也是一个一劳永逸的过程。 
创建控件的最大意义在于封装重复的工作，其次是可以扩充现有控件的功能。 
控件创建过程包括设计、开发、调试（就是所谓的3Ds开发流程,即Design、Develop、Debug）工作， 然后是控件的使用。 
控件开发者应该掌握的三项主要内容是：属性、事件和方法。
分类
用户界面控件
用于开发构建用户界面（UI）的控件，帮助完成软件开发中视窗、文本框、按钮、下拉式菜单等界面元素的开发。[1]
代表:DXperience、WebUIStudio Premier、BCGControlBar、ComponentOne Studio、NetAdvantage、Xtreme Toolkit等
图表控件
用于开发图表的控件，帮助软件实现数据可视化，实现开发时较难独立完成的复杂图表。
代表：TeeChart、AnyChart、ChartDirector、chart fx、Visifire、Iocomp等
报表控件
用与开发报表的控件，在软件中实现报表的浏览查看、设计、编辑、打印等功能。
代表：stimulsoft report、FastReport、ActiveReports等
表格控件
专门用于开发表格（CELL）的控件，主要实现网格中数据处理和操作的功能。
代表：WebGrid Enterprise、Spread等
条形码控件
用与条形码生成、扫描、读取和打印的控件
代表：Barcode Xpress、TBarcode、Barcode Reader Toolkit等
图像处理控件
一般是指帮助软件实现图像浏览与简单编辑功能的控件
代表：ImagXpress、Image Uploader、leadtools等
文档处理控件
一般指实现文档文件的浏览、编辑功能的控件
代表：add-in express for office and vcl、Aspose、TX Text Control等
库类控件
由 Microsoft 基础类库 (MFC) 提供的其他控件类（以前称为 OLE 控件），可以在 Windows 应用程序的对话框中使用，或在万维网的 HTML 页中使用。有关更多信息，请参见 MFC ActiveX 控件
公共控件
Windows 操作系统总是提供了若干 Windows 公共控件。这些控件对象都是可编程的，Visual C++对话框编辑器支持将这些控件对象添加到对话框。Microsoft 基础类库 (MFC) 提供相应的类来封装这些控件中的每一个，如表 Windows 公共控件和 MFC 类中所示。（表中的某些项有进一步描述它们的相关主题。有关没有主题的控件的信息，请参见 MFC 类的文档。） 
CWnd 类是所有窗口类（包括所有控件类）的基类。下列环境支持 Windows 公共控件： 
Windows 95、Windows 98 和 Windows 2000 
Windows NT 3.51版及更高版本 
Win32 系列 1.3 版（Visual C++ 4.2 版及更高版本不支持 Win32 系列） 
旧式公共控件在 Windows 的早期版本中同样可用，这些旧式公共控件包括复选框、组合框、编辑框、列表框、选项按钮、普通按钮
应用示例
列表框示例
要在 Microsoft Office Excel 2003 和早期版本的 Excel 中添加列表框，请单击“窗体”工具栏上的“列表框”按钮。然后，创建包含单元格 B2:E10 的列表框。 如果未显示“窗体”工具栏，请指向“视图”菜单上的“工具栏”，然后单击“窗体”。要在 Excel 2007 中添加列表框，请依次单击“开发工具”选项卡、“插入”，然后单击“窗体控件”部分中的“列表框”。 右键单击列表框，然后单击“设置控件格式”。键入以下信息，然后单击“确定”。 要指定列表的区域，请在“数据源区域”框中键入 H1:H20。 要在单元格 G1 中键入数值（根据在列表中选择的项目），请在“单元格链接”框中键入 G1。 　注意：INDEX() 公式使用 G1 中的值返回相应的列表项目。 在“选定类型”下，确保选择“单选”选项。单击“确定”。 　注意：仅在您使用 Microsoft Visual Basic for Applications 过程返回列表值时，“复选”和“扩展”选项才有用。另请注意，使用“三维阴影”复选框可使列表框具有三维外观。列表框应显示项目列表。要使用列表框，请单击任意单元格，这样不会选择列表框。如果您单击列表中的某一项目，单元格 G1 将更新为一个数字，以指示所选项目在列表中的位置。单元格 A1 中的 INDEX 公式使用此数字显示项目的名称。
组合框示例
要在 Excel 2003 和早期版本的 Excel 中添加组合框，请单击“窗体”工具栏上的“组合框”按钮。 　要在 Excel 2007 中添加组合框，请依次单击“开发工具”选项卡、“插入”，然后单击“窗体控件”部分中的“组合框”。 创建包含单元格 B2:E2 的对象。 右键单击组合框，然后单击“设置控件格式”。输入以下信息，然后单击“确定”： 要指定列表的区域，请在“数据源区域”框中键入 H1:H20。 要在单元格 G1 中键入数值（根据在列表中选择的项目），请在“单元格链接”框中键入 G1。 　注意：INDEX 公式使用 G1 中的值返回相应的列表项目。 在“下拉显示项数”框中，键入 10。此条目决定在必须使用滚动条查看其他项目之前显示的项目数。 　注意：“三维阴影”复选框是可选的；使用它可使下拉框或组合框具有三维外观。下拉框或组合框应显示项目列表。要使用下拉框或组合框，请单击任意单元格，这样不会选择对象。如果您单击下拉框或组合框中的某一项目，单元格 G1 将更新为一个数字，以指示所选项目在列表中的位置。单元格 A1 中的 INDEX 公式使用此数字显示项目的名称。
微调框示例
要在 Excel 2003 和早期版本的 Excel 中添加微调框，请单击“窗体”工具栏上的“微调框”按钮，然后创建包含单元格 B2:B3 的微调框。将微调框的大小调整为大约列宽度的四分之一。 　要在 Excel 2007 中添加微调框，请依次单击“开发工具”选项卡、“插入”，然后单击“窗体控件”部分中的“数值调节钮”。 右键单击微调框，然后单击“设置控件格式”。输入以下信息，然后单击“确定”： 在“当前值”框中，键入 1。 　此值将初始化微调框，以便 INDEX 公式指向列表中的第一个项目。 在“最小值”框中，键入 1。 　此值会将微调框的顶部限制为列表中的第一个项目。 在“最大值”框中，键入 20。 　此数字指定列表中条目的最大数。 在“步长”框中，键入 1。 　此值控制微调框控件将当前值增大多少。 要在单元格 G1 中键入数值（根据在列表中选择的项目），请在“单元格链接”框中键入 G1。单击任意单元格，这样不会选择微调框。如果您单击微调框中的向上控件或向下控件，单元格 G1 将更新为一个数字，以指示微调框的当前值与微调框步长的和或差。然后，此数字将更新单元格 A1 中的 INDEX 公式以显示下一项目或上一项目。 　如果您在当前值为 1 时单击向下控件，或者在当前值为 20 时单击向上控件，则微调框值不会更改。
滚动条示例
要在 Excel 2003 和早期版本的 Excel 中添加滚动条，请单击“窗体”工具栏上的“滚动条”按钮，然后创建高度为单元格 B2:B6 且宽度大约为列宽度的四分之一的滚动条。 　要在 Excel 2007 中添加滚动条，请依次单击“开发工具”选项卡、“插入”，然后单击“窗体控件”部分中的“滚动条”。 右键单击滚动条，然后单击“设置控件格式”。键入以下信息，然后单击“确定”。 在“当前值”框中，键入 1。 　此值将初始化滚动条，以便 INDEX 公式指向列表中的第一个项目。 在“最小值”框中，键入 1。 　此值会将滚动条的顶部限制为列表中的第一个项目。 在“最大值”框中，键入 20。此数字指定列表中条目的最大数。 在“步长”框中，键入 1。 　此值控制滚动条控件将当前值增大多少。 在“页步长”框中，键入 5。此条目控制当您单击滚动条中滚动框的任意一边时将当前值增大多少。 要在单元格 G1 中键入数值（根据在列表中选择的项目），请在“单元格链接”框中键入 G1。 　注意：“三维阴影”复选框是可选的；使用它可使滚动条具有三维外观。单击任意单元格，这样不会选择滚动条。如果您单击滚动条中的向上控件或向下控件，单元格 G1 将更新为一个数字，以指示滚动条的当前值与滚动条步长的和或差。此数字在单元格 A1 中的 INDEX 公式中使用，以显示当前项目的下一项目或上一项目。 　您还可以拖动滚动条以更改值，或单击滚动条中滚动框的任意一边以将该值增大 5（“页步长”值）。如果您在当前值为 1 时单击向下控件，或者在当前值为 20 时单击向上控件，则滚动条不会更改。
其他控件
除了封装所有 Windows 公共控件的类和支持对您自己的 ActiveX 控件进行编程（或使用其他应用程序提供的 ActiveX 控件）的类以外，MFC 本身还提供了下列控件类： 
CBitmapButton
CCheckListBox
CDragListBox
控件{Controls}：一种基于微软公司ActiveX技术的可重用的软件组件。可用这些组件增加网页、桌面应用程序和软件开发工具的交互性以及更多的功能，例如动画效果或弹出式选单。ActiveX控件可用不同程序设计语言编写，包括Java、C++和Visual Basic。