# IExDataExchanger Struct Reference
[COM Interfaces]

Inheritance diagram for IExDataExchanger:

List of all members.

## Public Member Functions
virtual void MCCOMAPI | Clone (IExDataExchanger **clonedObject, IMCUnknown *pUnkOuter)=0
virtual boolean MCCOMAPI | IsEqual (IExDataExchanger *otherDataExchanger)=0
virtual MCCOMErr MCCOMAPI | GetParameter (IDType keyword, void *parameter)=0
virtual MCCOMErr MCCOMAPI | SetParameter (IDType keyword, void *parameter)=0
virtual void *MCCOMAPI | GetExtensionDataBuffer ()=0
virtual MCCOMErr MCCOMAPI | ExtensionDataChanged ()=0
virtual MCCOMErr MCCOMAPI | HandleEvent (MessageID message, IMFResponder *source, void *data)=0
virtual MCCOMErr MCCOMAPI | SimpleHandleEvent (MessageID message, IMFResponder *source, void *data)=0
virtual void MCCOMAPI | GetUIHandler (TUIHandlerFunctionPtr &outHandler)=0
virtual int16 MCCOMAPI | GetResID ()=0
virtual int16 MCCOMAPI | GetMiniPartID ()=0
virtual MCCOMErr MCCOMAPI | OverridesMiniPartID ()=0
virtual MCCOMErr MCCOMAPI | InitComponent ()=0
virtual MCCOMErr MCCOMAPI | CopyComponentExtraData (IExDataExchanger *dest)=0
virtual int32 MCCOMAPI | GetParamsBufferSize () const =0

## Detailed Description

Contains utility methods that are complements to IMCUnknown, like clone() Allows the Shell to handle the UI of the Component and the Component's public data. Handles the communication between the Component and the Shell.

## Member Function Documentation

virtual void MCCOMAPI IExDataExchanger::Clone | ( | IExDataExchanger ** | clonedObject,
|  | IMCUnknown * | pUnkOuter |
| ) |  |  | `[pure virtual]`

Creates a copy of an external component. You only need to implement this method if your object has data that are not stored in its Parameter Map (Pmap).

Parameters:

  | clonedObject | : the resulting copy of the current object
  | pUnkOuter | : the internal component that needs to be linked to your object (call SetControllingUnknown(pUnkOuter) on the clone)

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::CopyComponentExtraData | ( | IExDataExchanger * | dest | ) | `[pure virtual]`

Some components can contain data that aren't part of its pMap but need to copy during the Undo/Redo action for example. Implement this method to copy these "outside the pmap" data. Typicaly, it should copy the extra data that are cloned in the Clone method implementation.

Parameters:

  | dest | The component where the date should be copied.

Implemented in TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::ExtensionDataChanged | ( |  | ) | `[pure virtual]`

Called each time a parameter of the parameter map (Pmap) is modified. This should only be used to invalidate caches and should be quick since it can be called many times.

Implemented in TBasicDistantLight, TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual void* MCCOMAPI IExDataExchanger::GetExtensionDataBuffer | ( |  | ) | `[pure virtual]`

Returns a pointer to the buffer that contains the parameter map (Pmap). This function should always be implemented by your component otherwise the base address of the object will be used as the address of the Pmap.

Implemented in TBasicModifier, TBasicModule, TBasicPrimitive, and TBasicDataExchanger.

virtual int16 MCCOMAPI IExDataExchanger::GetMiniPartID | ( |  | ) | `[pure virtual]`

Returns the resource ID of the NodePart used for the MiniPart of the component.
If you want this value to be used, implement OverridesMiniPartID.

Implemented in TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::GetParameter | ( | IDType | keyword,
|  | void * | parameter |
| ) |  |  | `[pure virtual]`

Returns the value of a given parameter of this dataExchanger. This function is called when the shell cannot find the given parameter in the Parameter Map (Pmap) of the component You need to implement this method only if your object has parameters that are not inside the parameter map.

Parameters:

  | keyword | The ID of the parameter.
  | parameter | A pointer to buffer where the value of the parameter can be copied.

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual int32 MCCOMAPI IExDataExchanger::GetParamsBufferSize | ( |  | ) | const`[pure virtual]`

returns the size of the buffer based on the C code (eg sizeof(fPmap)) so that the application can check the calculated pmap size

virtual int16 MCCOMAPI IExDataExchanger::GetResID | ( |  | ) | `[pure virtual]`

Returns the resource ID of the NodePart used for the properties of the component.
Return 0 to use the default node id (the same number than the one used for the 'COMP' resource). This is the default.
Return -1 if you want an auto pmap (very rarely needed)

Each implementation MUST always return the same value !

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual void MCCOMAPI IExDataExchanger::GetUIHandler | ( | TUIHandlerFunctionPtr & | outHandler | ) | `[pure virtual]`

Returns a static function that handles complex ui events. That function is allowed to change the UI, but it must take into account all the components and use the multivalue mode for parts.

See also:
  LoadMultiValue (in MFPartUtilities.h) Each implementation MUST always return the same handler ! If needed, you can implement both GetUIHandler and SimpleHandleEvent.

Implemented in TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::HandleEvent | ( | MessageID | message,
|  | IMFResponder * | source,
|  | void * | data |
| ) |  |  | `[pure virtual]`

Deprecated:
  (doesn't work with multiple selections)

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::InitComponent | ( |  | ) | `[pure virtual]`

Set the data of a component to their default value Returns kNotImplementedError if not implemented, MC_S_OK otherwise.

Implemented in TBasicRendererBox, and TBasicDataExchanger.

virtual boolean MCCOMAPI IExDataExchanger::IsEqual | ( | IExDataExchanger * | otherDataExchanger | ) | `[pure virtual]`

Returns true if the two pointers are referring to the same data exchanger. When IsEqual is called you can assume that otherDataExchanger is of the same type as "this"

Parameters:

  | otherDataExchanger | the extension to which it will be compared

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::OverridesMiniPartID | ( |  | ) | `[pure virtual]`

Returns the resource ID of the NodePart used for the properties of the component.
Return MC_E_NOTIMPL to use the default node id (the same number than the one used for the 'COMP' resource). This is the default.
Return MC_S_OK if you want to use the ID from GetMiniPartID.

Implemented in TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::SetParameter | ( | IDType | keyword,
|  | void * | parameter |
| ) |  |  | `[pure virtual]`

Sets the value of a parameter. You need to implement this method only if your object has parameters that are not inside the parameter map.

Parameters:

  | keyword | The ID of the parameter.
  | parameter | A pointer to buffer where the value of the parameter can be copied.

Implemented in TBasicModule, TBasicRendererBox, and TBasicDataExchanger.

virtual MCCOMErr MCCOMAPI IExDataExchanger::SimpleHandleEvent | ( | MessageID | message,
|  | IMFResponder * | source,
|  | void * | data |
| ) |  |  | `[pure virtual]`

Replaces the deprecated HandleEvent ONLY IN SIMPLE CASES. This function MUST NOT change the user interface (its called for every selected component). Example of allowed use : if (source && (source->GetInstanceID() == 'shfl')) { fPMap.fSeed = gShellUtilities->TickCount(); ExtensionDataChanged(); }

Parameters:

  | message,: | the ID of the message being sent (All MessageIDs are preceeded with "kMsg")
  | source,: | the part that sent the message (can be NULL !)
  | data,: | a pointer to private data corresponding to the message

Implemented in TBasicDistantLight, TBasicRendererBox, and TBasicDataExchanger.

The documentation for this struct was generated from the following file:

- IExtension.h