About Display Table Notifications
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.
Control |
MAPI action |
---|---|
Button |
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. |
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. |