### IDMCnrItem

  The IDMCnrItem class represents container-specific items in a direct manipulation. Containers create objects of the IDMCnrItem class when either of the following occurs:

  - A direct manipulation begins in a source container
  - A container item is dragged over a potential target container during a direct manipulation
  In addition to attributes inherited from IDMItem, objects of this class have a pointer to the source container that is the source of the direct manipulation, the source container's identifier (ID), and a pointer to the container object that the container item represents.

  This class provides virtual functions that implement direct manipulation support for the container. You can derive item classes to support the direct manipulation of container items if the default Open Class Library support does not meet your requirements.

### IDMCnrItem - Member Functions and Data by Group

### Constructors & Destructor

You can construct and destruct objects of this class.

~IDMCnrItem

      public:
      virtual ~IDMCnrItem()

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

IDMCnrItem

  Overload 1

      public:
      IDMCnrItem(const IDMItem::Handle& dragItem)

  dragItem
    A reference to a handle of a generic drag item that is created by the Open Class Library.

  Use this constructor to construct IDMCnrItem objects for the target of a direct manipulation. It is called by the member function, IDMItemProviderFor::provideTargetItemFor, of the container's item provider for the container item class.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 2

      public:
      IDMCnrItem( IContainerControl* container,
                  IContainerObject* object,
                  IDMSourceOperation* sourceOperation,
                  const ISize& imageOffset )

  container
    A pointer to the source container control.
  object
    A pointer to the source container object.
  sourceOperation
    A pointer to the drag source operation object to which this container item object is to be added.
  imageOffset
    A reference to the offset of the drag image from the pointing device.

  Use this constructor to construct IDMCnrItem objects for the source of a direct manipulation. It is called by the member function, IDMCnrItem::generateSourceItems.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Drop Processing

Use these members during the drop operation of a direct manipulation.

targetDrop

      public:
      virtual bool targetDrop(IDMTargetDropEvent& event)

  Implements container-item-specific rendering when the container item that represents a container object is dropped on a target container. This function adds the object into the target container. Derived classes should override this function to insert the associated container object into the target container if the default support does not meet your requirements.
  Note: If multiple container items are dropped, this function is called once for each item. The items are processed in the reverse order in which they were added to the source operation in the member function, IDMCnrItem::generateSourceItems.

Exception

  IInvalidRequest | The drop cannot be completed. A source object must exist for this operation.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Source Items

Use these members to access and manipulate source items involved in a direct manipulation.

containerId

      public:
      virtual unsigned long containerId() const

  Returns the source container's ID.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

generateSourceItems

      public:
      static bool
        generateSourceItems( IDMSourceOperation* sourceOperation )

  Generates container drag items that represent container objects selected in the source container. This function is called by the container's implementation of IDMItemProvider::provideSourceItems in the template class IDMItemProviderFor.

  The default implementation of this function in this class creates IDMCnrItem objects and adds them to the source operation. If you use the IDMItemProviderFor template class and you have defined a derived item class, you must implement IDMCnrItem::generateSourceItems in your derived container item class. In your implementation, create one or more objects of your derived container item class and call IDMOperation::addItem to add the objects to the source operation.
  Note: Use the sourceOperation parameter to access IDMOperation::addItem.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

sourceContainer

      public:
      virtual IContainerControl* sourceContainer() const

  Returns a pointer to the source container.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IDMCnrItem - Inherited Member Functions and Data

#### Inherited Public Functions

  IDMItem

  -     virtual ~IDMItem()

  -     virtual IDMItem& addRMF(const IString& rmf)

  -     virtual IDMItem&
          addRMF( const IString& rm,
                  const IString& rf )

  -     virtual IDMItem& addType(const char* aType)

  -     static void appendRMF(IString& rmfs, const IString& rmf)

  -     virtual unsigned long attributes() const

  -     virtual bool canBeCopied() const

  -     virtual bool canBeLinked() const

  -     virtual bool canBeMoved() const

  -     static IString compressedRMFs(const IString& rmfs)

  -     virtual IString containerName() const

  -     virtual IString contents() const

  -     virtual unsigned long contentsSize() const

  -     static void deleteRMF(IString& rmfs, const IString& rmf)

  -     DropIndicator dropStatus() const

  -     virtual IDMItem& enableCopy(bool copyable = true)

  -     virtual IDMItem& enableLink(bool linkable = true)

  -     virtual IDMItem& enableMove(bool moveable = true)

  -     bool hasImage() const

  -     virtual bool hasType(const char* aType) const

  -     IDMItem(const Handle& item)

  -     IDMItem( IDMSourceOperation* sourceOperation,
                 const IString& types,
                 const unsigned long supportedOperations = unknown,
                 const unsigned long attributes = none )

  -     IDMItem(const IDMItem& dragItem)

  -     IDMItem( IDMTargetOperation* targetOperation,
                 _DRAGITEM* dragItem )

  -     virtual IDMImage& image()

  -     virtual ISize imageOffset() const

  -     virtual bool isContainer() const

  -     virtual bool isGroup() const

  -     virtual bool isOnRemovableMedia() const

  -     virtual bool isOpen() const

  -     virtual bool isReference() const

  -     bool isTargetTheSource() const

  -     static IString
          matchingRMFs( const IString& rmfs1,
                        const IString& rmfs2,
                        bool firstOnly = false )

  -     virtual IString nativeRF() const

  -     virtual IString nativeRM() const

  -     virtual IString nativeRMF() const

  -     virtual void* object() const

  -     Handle operator =(const Handle& item)

  -     IDMItem& operator =(const IDMItem& item)

  -     virtual IDMItem&
          removeRMF( const IString& rm,
                     const IString& rf )

  -     virtual IDMItem& removeRMF(const IString& rmf)

  -     virtual IDMItem& removeType(const char* aType)

  -     unsigned renderer() const

  -     virtual bool requiresPreparation() const

  -     static IString rfForThisProcess()

  -     static IString rfFrom(const IString& rmf)

  -     static IString
          rmfFrom( const IString& rm,
                   const IString& rf )

  -     static IString rmFrom(const IString& rmf)

  -     virtual IString rmfs() const

  -     static IString rmfsFrom(const IString& rmfs)

  -     static IString
          rmfsFrom( const IString& rm,
                    const IString& rf )

  -     IString selectedRMF() const

  -     virtual IDMItem& setContainer(bool container = true)

  -     IDMItem& setContainerName(const char* containerName)

  -     virtual bool setContents(const IString& data)

  -     IDMItem& setDropStatus(DropIndicator status)

  -     virtual IDMItem& setGroup(bool group = true)

  -     virtual IDMItem& setImage(IDMImage& image)

  -     virtual IDMItem& setNativeRMF(const IString& rmf)

  -     virtual IDMItem&
          setNativeRMF( const IString& rm,
                        const IString& rf )

  -     virtual IDMItem& setObject(void* pointerToObject)

  -     virtual IDMItem&
          setOnRemovableMedia( bool onRemovableMedia = true )

  -     virtual IDMItem& setOpen(bool open = true)

  -     virtual IDMItem& setReference(bool reference = true)

  -     IDMItem& setRenderer(unsigned position)

  -     virtual IDMItem&
          setRequiresPreparation( bool requiresPrep = true )

  -     virtual IDMItem& setRMFs(const IString& rmfs)

  -     IDMItem& setSelectedRMF(const IString& rmf)

  -     IDMItem& setSourceName(const char* sourceName)

  -     IDMItem& setSourceWindowHandle(IWindowHandle window)

  -     IDMItem& setTargetName(const char* targetName)

  -     virtual IDMItem& setTrueType(const char* aType)

  -     virtual IDMItem& setTypes(const char* types)

  -     virtual bool sourceDiscard(IDMSourceDiscardEvent& event)

  -     virtual bool sourceEnd(IDMSourceEndEvent& event)

  -     static Handle sourceItemFor(const Handle& targetItem)

  -     virtual IString sourceName() const

  -     virtual IDMSourceOperation* sourceOperation()

  -     virtual bool sourcePrepare(IDMSourcePrepareEvent& event)

  -     virtual bool sourcePrint(IDMSourcePrintEvent& event)

  -     virtual bool sourceRender(IDMSourceRenderEvent& event)

  -     virtual IWindow* sourceWindow() const

  -     virtual IWindowHandle sourceWindowHandle() const

  -     virtual unsigned long supportedOperations() const

  -     virtual unsigned long
          supportedOperationsFor( const IString& selectedRMFs ) const

  -     virtual bool
          supportsRMF( const IString& rm,
                       const IString& rf )

  -     virtual bool supportsRMF(const IString& rmf)

  -     virtual bool targetEnd(IDMTargetEndEvent& event)

  -     virtual IString targetName() const

  -     virtual IDMTargetOperation* targetOperation()

  -     unsigned long tokenForWPSObject() const

  -     virtual IString trueType() const

  -     virtual IString types() const

  IMRefCounted

  -     void addRef()

  -     unsigned long count() const

  -     void removeRef()

#### Inherited Public Data

  IDMItem

  -     static const unsigned long container

  -     static const unsigned long copyable

  -     static const unsigned long group

  -     static const unsigned long linkable

  -     static const unsigned long moveable

  -     static const unsigned long none

  -     static const unsigned long open

  -     static const unsigned long prepare

  -     static const unsigned long reference

  -     static const unsigned long removableMedia

  -     static const unsigned long unknown

#### Inherited Protected Functions

  IMRefCounted

  -     virtual ~IMRefCounted()

  -     IMRefCounted(const IMRefCounted&)

  -     IMRefCounted()

  -     IMRefCounted& operator =(const IMRefCounted&)

  IDMItem

  -     IString generateSourceName()

#### Inherited Protected Data

  IDMItem

  -     IString strContents