Controls are objects that users can interact with to enter or manipulate data. They commonly appear in dialog boxes or on toolbars. This article family covers three main kinds of controls:
The Windows operating system has always provided a number of Windows common controls. These control objects are programmable, and the Visual C++ dialog editor supports adding them to your dialog boxes. The Microsoft Foundation Class Library (MFC) supplies classes that encapsulate each of these controls, as shown in the table Windows Common Controls and MFC Classes. (Some items in the table have related articles that describe them further. For controls that lack articles, see the documentation for the MFC class.)
Class CWnd is the base class of all window classes, including all of the control classes. The Windows common controls are supported in the following environments:
The older common controls — check boxes, combo boxes, edit boxes, list boxes, option buttons, pushbuttons, scroll bar controls, and static controls — were available in earlier versions of Windows as well.
ActiveX controls, formerly known as OLE controls, can be used in dialog boxes in your applications for Windows, or in HTML pages on the World Wide Web. For more information, see ActiveX Control Topics.
In addition to classes that encapsulate all of the Windows common controls and that support programming your own ActiveX controls (or using ActiveX controls supplied by others), MFC supplies the following control classes of its own:
The table below briefly describes each of the Windows common controls, including the control's MFC wrapper class.
Windows Common Controls and MFC Classes
Control |
MFC Class |
Description |
New in Windows 95? |
animation | CAnimateCtrl | displays successive frames of an AVI video clip | yes |
button | CButton | pushbuttons that cause an action; also used for check boxes, radio buttons, and group boxes | no |
combo box | CComboBox | combination of an edit box and a list box | no |
date and time picker | CDateTimeCtrl | allows the user to choose a specific date or time value | yes |
edit box | CEdit | boxes for entering text | no |
extended combo box | CComboBoxEx | a combo box control with the ability to display images | yes |
header | CHeaderCtrl | button that appears above a column of text; controls width of text displayed | yes |
hotkey | CHotKeyCtrl | window that enables user to create a "hot key" to perform an action quickly | yes |
image list | CImageList | collection of images used to manage large sets of icons or bitmaps (image list isn't really a control; it supports lists used by other controls) | yes |
list | CListCtrl | window that displays a list of text with icons | yes |
list box | CListBox | box that contains a list of strings | no |
month calendar | CMonthCalCtrl | control that displays date information | yes |
progress | CProgressCtrl | window that indicates progress of a long operation | yes |
rebar | CRebarCtrl | tool bar that can contain additional child windows in the form of controls | yes |
rich edit | CRichEditCtrl | window in which user can edit with character and paragraph formatting (see Classes Related to Rich Edit Controls) | yes |
scroll bar | CScrollBar | scroll bar used as a control inside a dialog box (not on a window) | no |
slider | CSliderCtrl | window containing a slider control with optional tick marks | yes |
spin button | CSpinButtonCtrl | pair of arrow buttons user can click to increment or decrement a value | yes |
static-text | CStatic | text for labeling other controls | no |
status bar | CStatusBarCtrl | window for displaying status information, similar to MFC class CStatusBar | yes |
tab | CTabCtrl | analogous to the dividers in a notebook; used in "tab dialog boxes" or property sheets | yes |
toolbar | CToolBarCtrl | window with command-generating buttons, similar to MFC class CToolBar | yes |
tool tip | CToolTipCtrl | small pop-up window that describes purpose of a toolbar button or other tool | yes |
tree | CTreeCtrl | window that displays a hierarchical list of items | yes |