Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Assigns a single element into the array.
void PutElement( 
   long* rgIndices, 
   void* pvData  
);
Parameters
- rgIndices 
 Pointer to an array of indexes for each dimension of the array.
- pvData 
 Pointer to the data to assign to the array. VT_DISPATCH, VT_UNKNOWN, and VT_BSTR variant types are pointers and do not require another level of indirection.
Remarks
This function automatically calls the Windows functions SafeArrayLock and SafeArrayUnlock before and after assigning the element. If the data element is a string, object, or variant, the function copies it correctly, and if the existing element is a string, object, or variant, it is cleared correctly.
Note that you can have multiple locks on an array, so you can put elements into an array while the array is locked by other operations.
On error, the function throws a CMemoryException or COleException.
Example
VARIANT retVariantArray() 
{
   COleSafeArray saRet;         
   DWORD numElements[] = {10, 10}; // 10x10 
   // Create the 2 dimensional safe-array of type VT_R8 with size 10x10
   saRet.Create(VT_R8, 2, numElements);
   // Initialize safearray  with values... 
   long index[2];
   for(index[0] = 0; index[0] < 10; index[0]+)
   {
      for(index[1] = 0; index[1] < 10; index[1]+)
      {
         double val = index[0] + index[1]*10;
         //populate the safearray elements with double values
         saRet.PutElement(index, &val);
      }
   }
   // Return the safe-array encapsulated in a VARIANT... 
   return saRet.Detach();
}
Requirements
Header: afxdisp.h