About Display Table Notifications

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 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 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:

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.

Control MAPI action
Button Calls IMAPIProp::OpenProperty to 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 ulPRPropertyName member.
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.
Edit Rereads the property and redisplays.
Group box Ignores the notification.
Label 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.