# OleCreatePropertyFrameIndirect

Creates a property frame, that is, a property sheet dialog box, based on a structure (OCPFIPARAMS) that contains the parameters, rather than specifying separate parameters as when calling OleCreatePropertyFrame.

STDAPI OleCreatePropertyFrameIndirect(

OCPFIPARAMS* pParams | //Pointer to the structure of parameters for dialog box
); |

Parameters

pParams
  [in] Pointer to the caller-allocated structure containing the creation parameters for the dialog box.

Return Values

This function supports the standard return values E_INVALIDARG, E_OUTOFMEMORY, and E_UNEXPECTED, as well as the following:

S_OK
  The dialog box was invoked and operated successfully.
E_POINTER
  The address in pParams is not valid. For example, it may be NULL.

Remarks

Besides cbStructSize (the size of the structure) and dispIDInitialProperty, all of the members of the OCPFIPARAMS structure have the same semantics as the parameters for OleCreatePropertyFrame. When dispIDInitialProperty is DISPID_UNKNOWN, the behavior of the two functions is identical.

Working in conjunction with IPerPropertyBrowsing and IPropertyPage2, dispIDInitialProperty allows the caller to specify which single property should be highlighted when the dialog box is made visible. This feature is not available when using OleCreatePropertyFrame. To determine the page and property to show initially, the property frame will do the following:

1. Call `(*lplpUnk)->QueryInterface(IID_IPerPropertyBrowsing, ...)` to get an interface pointer to the first object.

2. Call `IPerPropertyBrowsing::MapPropertyToPage(dispIDInitialProperty, ...)` to determine which page CLSID contains the property to be highlighted. All objects for which this frame is being invoked must support the set of properties displayed in the frame.

3. When the dialog box is created, the property page with the CLSID retrieved in Step 2 is activated with IPropertyPage::Activate.

4. The property frame queries the active page for IPropertyPage2.

5. If successful, the frame calls `IPropertyPage2::EditProperty(dispIDInitialProperty)` to highlight the correct field in that dialog box.

See Also

OCPFIPARAMS, OleCreatePropertyFrame