Form server implementers should expect the following sequence of method calls to their form server and form objects when a client application loads a message:
The client application opens the form manager with a call to MAPIOpenFormMgr.
The client application calls IMAPIFormMgr::LoadForm, which returns an object with IMAPIForm. The form manager may be released now if it won't be used for further form activations. Note that a call to LoadForm may take some time because the form manager may have to install the form server's executable files before proceeding.
Optionally, the client application can prepare IMAPIViewContext to control operations which may cause the form object to load the previous or next message in the folder. The client application can use IMAPIForm::SetViewContext to change the default view context that was set in the LoadForm call.
The client application calls IPersistMessage::Load to load message data into the form object.
The client application calls IMAPIForm::DoVerb to invoke the "open" verb, passing the optional IMAPIViewContext interface pointer.