About Display Table Notifications

Last modified: January 16, 2009

Applies to: Office 2010 | Outlook 2010 | Visual Studio

Notifications on a display table are sent by the service provider responsible for creating the display table to MAPI. MAPI registers for these notifications by calling a display table's IMAPITable::Advise method and specifying the table modified event.

As with all table notifications, display table notifications include a TABLE_NOTIFICATION structure. Only the ulTableEvent and the propIndex members of this structure are significant; the other members are ignored. The ulTableEvent member is set to TABLE_ROW_MODIFIED and the propIndex member is set to the value of the PR_CONTROL_ID (PidTagControlId) column in the corresponding row. MAPI responds to the notification by calling the IMAPIProp::GetProps method for the property displayed in the control and by displaying the new value.

Display table notifications can be used by a service provider to coordinate changes to related controls on the dialog box. For example, if the property interface implementation needs to refresh one or more fields on the dialog box — perhaps in response to another control that has set the DT_SET_IMMEDIATE flag in its PR_CONTROL_FLAGS (PidTagControlFlags) property — it can generate a display table notification. A display table notification can alert the property interface implementation that the value of one or more controls needs to be reread due to a change being made or an external event occurring.

A service provider can issue display table notifications by:

  • Calling ITableData::HrNotify, if the display table was built with a table data object.

    – Or –

  • Using its own code, if the display table was built with the provider's IMAPITable implementation.

MAPI responds to display table notifications when necessary by rereading a control's value from the property interface implementation. The following table describes the details surrounding how MAPI handles notifications for specific types of controls.


MAPI action


Calls IMAPIProp::OpenPropertyto retrieve the control object by way of the property represented by the ulPRControl member of the DTBLBUTTON structure if the call had failed previously. Calls the control object's IMAPIControl::GetState to determine whether the button should be enabled and enables or disables the button accordingly.

Check box

Rereads the value for the ulPRPropertyName member.

Combo box

Reopens the table associated with the ulPRTableName member of the DTBLCOMBOBOX structure. Rereads all of the rows including the value for the ulPRPropertyNamemember.

Drop-down list box

Reopens the table associated with the ulPRTableName member of the DTBLDDLBX structure and rereads all of the rows. Calls IMAPIProp::GetProps to retrieve the values for the properties stored in the ulPRDisplayProperty and the ulPRSetProperty members.


Rereads the property and redisplays.

Group box

Ignores the notification.


Ignores the notification.

Multiple selection list box

If one of the columns is an entry identifier, refreshes the list box. The corresponding object is not closed or reloaded.

Single selection list box

Reads the set property, trying to identify it.

Multivalued list box

Rereads the property and repopulates the list box.

Tabbed page

There are no notifications for this control; everything is static.

Radio button

Rereads the property that is associated with the button and is stored in the ulPropTag member of the DTBLRADIOBUTTON structure and makes the appropriate selection with the controls.