home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // new COleVariant code (uses new features of OLEAUT32.DLL)
-
- COleVariant::COleVariant(LPCITEMIDLIST pidl)
- {
- AfxVariantInit(this);
-
- if (pidl != NULL)
- {
- // walk through entries in the list and accumulate their size
-
- UINT cbTotal = 0;
- SAFEARRAY *psa = NULL;
- LPCITEMIDLIST pidlWalker = pidl;
-
- while (pidlWalker->mkid.cb)
- {
- cbTotal += pidlWalker->mkid.cb;
- pidlWalker = (LPCITEMIDLIST)
- (((LPBYTE)pidlWalker) + pidlWalker->mkid.cb);
- }
-
- // add the base structure size
- cbTotal += sizeof(ITEMIDLIST);
-
- // get a safe array for them
- psa = SafeArrayCreateVector(VT_UI1, 0, cbTotal);
-
- // copy it and set members
- if (psa != NULL)
- {
- memcpy(psa->pvData, (LPBYTE) pidl, cbTotal);
- vt = VT_ARRAY | VT_UI1;
- parray = psa;
- }
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
-