+#ifdef __REACTOS__
+static HRESULT WINAPI DefaultDragEnter(HWND hwndTarget,
+ IDataObject* pDataObj,
+ DWORD grfKeyState,
+ POINTL pt,
+ DWORD* pdwEffect)
+{
+ HRESULT hr;
+ FORMATETC fme;
+
+ ZeroMemory(&fme, sizeof(fme));
+ fme.cfFormat = CF_HDROP;
+ fme.ptd = NULL;
+ fme.dwAspect = DVASPECT_CONTENT;
+ fme.lindex = -1;
+ fme.tymed = TYMED_HGLOBAL;
+ hr = pDataObj->lpVtbl->QueryGetData(pDataObj, &fme);
+
+ *pdwEffect = SUCCEEDED(hr) ? DROPEFFECT_COPY : DROPEFFECT_NONE;
+
+ if (*pdwEffect == DROPEFFECT_NONE)
+ return DRAGDROP_S_CANCEL;
+
+ return S_OK;
+}
+
+static HRESULT WINAPI DefaultDrop(HWND hwndAccepter,
+ IDataObject* pDataObj,
+ DWORD grfKeyState,
+ POINTL pt,
+ DWORD* pdwEffect)
+{
+ FORMATETC fme;
+ STGMEDIUM stgm;
+ HRESULT hr;
+ HGLOBAL hGlobal = NULL;
+
+ ZeroMemory(&fme, sizeof(fme));
+ fme.cfFormat = CF_HDROP;
+ fme.ptd = NULL;
+ fme.dwAspect = DVASPECT_CONTENT;
+ fme.lindex = -1;
+ fme.tymed = TYMED_HGLOBAL;
+ hr = pDataObj->lpVtbl->QueryGetData(pDataObj, &fme);
+ if (FAILED(hr))
+ return hr;
+
+ ZeroMemory(&stgm, sizeof(stgm));
+ hr = pDataObj->lpVtbl->GetData(pDataObj, &fme, &stgm);
+ if (SUCCEEDED(hr))
+ {
+ hGlobal = stgm.DUMMYUNIONNAME.hGlobal;
+ if (hGlobal)
+ {
+ if (IsWindowUnicode(hwndAccepter))
+ PostMessageW(hwndAccepter, WM_DROPFILES, (WPARAM)hGlobal, 0);
+ else
+ PostMessageA(hwndAccepter, WM_DROPFILES, (WPARAM)hGlobal, 0);
+ }
+ ReleaseStgMedium(&stgm);
+ }
+
+ return hr;
+}
+#endif
+