Applies to: Outlook 2013 | Outlook 2016

Describes a control that will be used in a dialog box built from a display table.

Property Value
Header file:
typedef struct
  ULONG ulCtlType;
  ULONG ulCtlFlags;
  LPBYTE lpbNotif;
  ULONG cbNotif;
  LPSTR lpszFilter;
  ULONG ulItemID;
    LPVOID lpv;
    LPDTBLLABEL lplabel;
    LPDTBLEDIT lpedit;
    LPDTBLLBX lplbx;
    LPDTBLCOMBOBOX lpcombobox;
    LPDTBLDDLBX lpddlbx;
    LPDTBLCHECKBOX lpcheckbox;
    LPDTBLGROUPBOX lpgroupbox;
    LPDTBLBUTTON lpbutton;
    LPDTBLRADIOBUTTON lpradiobutton;
    LPDTBLMVDDLBX lpmvddlbx;
    LPDTBLPAGE lppage;
  } ctl;



Type of control that is included in the ctl member and corresponds to the control's PR_CONTROL_TYPE (PidTagControlType) property. Possible values are as follows:


Label control.


Edit control.


List box control.


Combo box control.


Drop-down list control.


Check box control.


Group box control.


Button control.


Tabbed page control.


Radio button control.


Multi-valued list control.


Multi-valued drop-down list control.


Bitmask of flags that describes the control's features and corresponds to the control's PR_CONTROL_FLAGS (PidTagControlFlags) property. These flags can be set for check boxes, combo boxes, list boxes, and edit controls only. Possible values are as follows:


Either the ANSI or DBCS format is accepted. This flag is valid for edit controls only.


A user can modify the text in the control.


The control can contain multiple text lines. This flag is valid for edit controls only.


The control contains a password; therefore, the contents of the control should not be displayed to the user. This flag is valid for edit controls only.


The dialog box control is required. This flag is valid only for edit and combo box controls.


Enables immediate output of a value upon a change in the control. This allows a dependency relationship to be established between two controls.


Pointer to a structure that consists of a GUID structure, to represent the service provider and an identifier for the control. The lpbNotif and cbNotif members correspond to the control's PR_CONTROL_ID (PidTagControlId) property and are used to notify the user interface when the control has to be updated.


Count of bytes in the structure pointed to by the lpbNotif member.


Pointer to a character string that describes which characters can be entered into an edit or combo box control. For other types of controls, the lpszFilter member can be NULL. For edit and combo box controls, it should be a regular expression that applies to a single character at a time. The same filter is applied to all characters in the control. The format of the filter string is as follows:

Character Description
* Any character is allowed (for example, "*").
[ ] Defines a set of characters (for example, "[0123456789]".)
- Indicates a range of characters (for example, "[a-z]").
~ Indicates that these characters are not allowed (for example, "[~0-9]").
\ Used to quote any of the previous symbols (for example, "[\-\\\[\]]" means -, , [, and ] characters are allowed).


Value that identifies the control in the dialog box resource. For tabbed pages controls of type DTCT_PAGE the ulItemID member is optionally used to load the component name for the page from a string resource. Position and label information are read from the dialog box resource.


A structure that holds the data for the control and corresponds to the control's PR_CONTROL_STRUCTURE (PidTagControlStructure) property. Each type of control has a different structure.


The DTCTL structure describes one control of any type. Most of its members are used to set properties on the control.

The ctl member is a union of structures that relate to a particular type of control. If the DTCTL structure is describing an edit control, for example, the ctl member will point to a DTBLEDIT structure. This structure corresponds to the control's PR_CONTROL_STRUCTURE property. The union has as its first member a variable of type LPVOID to allow compile time initialization of the DTCTL structure.

Although the BuildDisplayTable function uses the DTCTL structure for building the display table from control resources, the DTCTL structure never appears in the display table itself. This structure just supplies information to BuildDisplayTable.

In the ulCtlFlags member, four flags DT_ACCEPT_DBCS, DT_EDITABLE, DT_MULTILINE_and DT_PASSWORD_EDIT affect edit controls only. Two others DT_REQUIRED and DT_SET_IMMEDIATE affect any editable control.

The controls available for a dialog box are label, text box, ink-aware text box, list, drop-down list, combo box, check box, group box, button, radio button, and tabbed page.

For an overview of display tables, see Display Tables. For information about how to implement a display table, see Implementing a Display Table.

See also