From: Vadim Zeitlin Date: Tue, 2 Nov 1999 16:20:40 +0000 (+0000) Subject: additions for wxFileDataObject from Ricky Gonzales X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/8b85d24e4cc885263d3bb72bd36a759fbd25631d additions for wxFileDataObject from Ricky Gonzales git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/ole/dataobj2.h b/include/wx/msw/ole/dataobj2.h index 5bb231f9f0..af68898d3c 100644 --- a/include/wx/msw/ole/dataobj2.h +++ b/include/wx/msw/ole/dataobj2.h @@ -73,6 +73,9 @@ class WXDLLEXPORT wxFileDataObject : public wxFileDataObjectBase public: // implement base class pure virtuals virtual bool SetData(size_t len, const void *buf); + virtual size_t GetDataSize() const; + virtual bool GetDataHere(void *pData) const; + virtual void AddFile(const wxString& file); }; #endif // _WX_MSW_OLE_DATAOBJ2_H diff --git a/src/msw/ole/dataobj.cpp b/src/msw/ole/dataobj.cpp index ded97ac472..90e8ab88cb 100644 --- a/src/msw/ole/dataobj.cpp +++ b/src/msw/ole/dataobj.cpp @@ -48,6 +48,8 @@ #include #endif +#include + #include "wx/msw/ole/oleutils.h" // ---------------------------------------------------------------------------- @@ -946,6 +948,68 @@ bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *pData) return TRUE; } +void wxFileDataObject::AddFile(const wxString& file) +{ + // just add file to filenames array + // all useful data (such as DROPFILES struct) will be + // created later as necessary + m_filenames.Add(file); +} + +size_t wxFileDataObject::GetDataSize() const +{ + // size returned will be the size of the DROPFILES structure, + // plus the list of filesnames (null byte separated), plus + // a double null at the end + + // if no filenames in list, size is 0 + if (m_filenames.GetCount() == 0) return 0; + + // inital size of DROPFILES struct + null byte + size_t sz = sizeof(DROPFILES) + 1; + + int i; + for (i=0; ipFiles = sizeof(DROPFILES); + pDrop->fNC = FALSE; + pDrop->fWide = FALSE; + + // set start of filenames list (null separated) + char *pbuf = (char*)pDrop + sizeof(DROPFILES); + + size_t i; + for (i=0; i