Last modified: July 23, 2011

Applies to: Outlook

In this article
Notes to Implementers
Notes to Callers
MFCMAPI Reference

Installs a form into a form library.

HRESULT InstallForm(
  ULONG_PTR ulUIParam,
  ULONG ulFlags,
  LPCSTR szCfgPathName


[in] A handle to the parent window of any dialog boxes or windows that this method displays. The ulUIParam parameter is ignored unless the client application sets the MAPI_DIALOG flag in the ulFlags parameter. The ulUIParam parameter can be NULL if MAPI_DIALOG is not also passed.


[in] A bitmask of flags that controls the installation of the form. The following flags can be set:


Displays a dialog box to provide progress information or prompt the user for more information. If this flag is not set, no dialog box is displayed.


The passed-in strings are in Unicode format. If the MAPI_UNICODE flag is not set, the strings are in ANSI format.


If another form already exists that handles the message class handled by this form, replace the existing form with this one. This flag is ignored if the MAPI_DIALOG flag is also present.


[in] The path to the form's configuration file.


The call succeeded and has returned the expected value or values.


An implementation error occurred. To get the MAPIERROR structure that is associated with the error, call the IMAPIFormContainer::GetLastError method.


The user canceled the installation of the form, typically by clicking the Cancel button in a dialog box.

Form library providers should fill in a MAPIERROR structure and return MAPI_E_EXTENDED_ERROR if any of the following conditions occur:

  • The configuration file is not found.

  • The configuration file is not readable.

  • The configuration file is invalid.

Client applications call the IMAPIFormContainer::InstallForm method to install a form into a specific form container. The szCfgPathName parameter must contain the path of a form configuration file (that is, a file with the .cfg extension that describes the form and its implementation). The flags in the ulFlags parameter specify the following:

  • If the MAPI_DIALOG flag is set, a user interface is displayed, enabling the user who is installing the form to specify installation details.

  • If the MAPIFORM_INSTALL_OVERWRITEONCONFLICT flag is set, any previous form for the same message class is replaced with the form being installed. Otherwise, the form installation is merged with the current form description, if one exists.


  • The absence of MAPIFORM_INSTALL_OVERWRITEONCONFLICT in the flag set means that a merge will be done. Any new platforms in the .cfg file that are not currently present in the form description will be installed and no other changes will occur.

  • If the MAPI_UNICODE flag is set, the path of the form configuration file is a Unicode string.

Clients should call IMAPIFormContainer::GetLastError if InstallForm returns MAPI_E_EXTENDED_ERROR, and they should check the returned MAPIERROR structure to determine the condition that raised the error.

For MFCMAPI sample code, see the following table.






MFCMAPI uses the IMAPIFormContainer::InstallForm method to install a form in a form container.