Quellcode durchsuchen

+ added some missing stuff to the activex unit, fixes bug #3820
* removed the warning about $A in jediapilib.inc

git-svn-id: trunk@501 -

florian vor 20 Jahren
Ursprung
Commit
e53f6d02f1
4 geänderte Dateien mit 380 neuen und 2 gelöschten Zeilen
  1. 1 0
      .gitattributes
  2. 361 1
      packages/extra/winunits/activex.pp
  3. 4 1
      packages/extra/winunits/jediapilib.inc
  4. 14 0
      tests/webtbs/tw3820.pp

+ 1 - 0
.gitattributes

@@ -6064,6 +6064,7 @@ tests/webtbs/tw3796.pp svneol=native#text/plain
 tests/webtbs/tw3805.pp svneol=native#text/plain
 tests/webtbs/tw3812.pp svneol=native#text/plain
 tests/webtbs/tw3814.pp svneol=native#text/plain
+tests/webtbs/tw3820.pp svneol=native#text/plain
 tests/webtbs/tw3821.pp svneol=native#text/plain
 tests/webtbs/tw3827.pp svneol=native#text/plain
 tests/webtbs/tw3833.pp svneol=native#text/plain

+ 361 - 1
packages/extra/winunits/activex.pp

@@ -23,7 +23,7 @@ Interface
 {$define read_interface}
 {$undef read_implementation}
 
-Uses Windows,types;
+Uses variants,Windows,types;
 
 
 type
@@ -2685,7 +2685,367 @@ TYPE
   function IsEqualGUID(const guid1,guid2 : TGUID) : Boolean;stdcall;external 'ole32.dll' name 'IsEqualGUID';
   function IsEqualIID(const iid1,iid2 : TIID) : Boolean;stdcall;external 'ole32.dll' name 'IsEqualGUID';
   function IsEqualCLSID(const clsid1,clsid2 : TCLSID) : Boolean;stdcall;external 'ole32.dll' name 'IsEqualGUID';
+  
+{ OleIdl.h }
+type
+  IOleInPlaceActiveObject = interface;
+  
+  IOleAdviseHolder = interface(IUnknown)
+    ['{00000111-0000-0000-C000-000000000046}']
+    function Advise(const advise: IAdviseSink; out dwConnection: DWORD): HResult;StdCall;
+    function Unadvise(dwConnection: DWORD): HResult;StdCall;
+    function EnumAdvise(out enumAdvise: IEnumStatData): HResult;StdCall;
+    function SendOnRename(const mk: IMoniker): HResult;StdCall;
+    function SendOnSave: HResult;StdCall;
+    function SendOnClose: HResult;StdCall;
+  end;
+  
+  IEnumOLEVERB = interface(IUnknown)
+    ['{00000104-0000-0000-C000-000000000046}']
+    function Next(celt: ULONG; out elt; pceltFetched: PULONG): HResult;StdCall;
+    function Skip(celt: ULONG): HResult;StdCall;
+    function Reset: HResult;StdCall;
+    function Clone(out ppenum: IEnumOLEVERB): HResult;StdCall;
+  end;
+  
+  IDropSource = interface(IUnknown)
+    ['{00000121-0000-0000-C000-000000000046}']
+    function QueryContinueDrag(fEscapePressed: BOOL;
+      grfKeyState: Longint):HResult;StdCall;
+    function GiveFeedback(dwEffect: Longint): HResult;StdCall;
+  end;
+  
+  IOleObject = interface(IUnknown)
+    ['{00000112-0000-0000-C000-000000000046}']
+    function SetClientSite(const clientSite: IOleClientSite): HResult;StdCall;
+    function GetClientSite(out clientSite: IOleClientSite): HResult;StdCall;
+    function SetHostNames(szContainerApp: POleStr; szContainerObj: POleStr): HResult;StdCall;
+    function Close(dwSaveOption: DWORD): HResult;StdCall;
+    function SetMoniker(dwWhichMoniker: DWORD; const mk: IMoniker): HResult;StdCall;
+    function GetMoniker(dwAssign: DWORD; dwWhichMoniker: DWORD; out mk: IMoniker): HResult;StdCall;
+    function InitFromData(const dataObject: IDataObject; fCreation: BOOL; dwReserved: DWORD): HResult;StdCall;
+    function GetClipboardData(dwReserved: DWORD; out dataObject: IDataObject): HResult;StdCall;
+    function DoVerb(iVerb: LONG; msg: PMsg; const activeSite: IOleClientSite; lindex: LONG; hwndParent: HWND; const posRect: TRect): HResult;StdCall;
+    function EnumVerbs(out enumOleVerb: IEnumOleVerb): HResult;StdCall;
+    function Update: HResult;StdCall;
+    function IsUpToDate: HResult;StdCall;
+    function GetUserClassID(out clsid: TCLSID): HResult;StdCall;
+    function GetUserType(dwFormOfType: DWORD; out pszUserType: POleStr): HResult;StdCall;
+    function SetExtent(dwDrawAspect: DWORD; const size: TPoint): HResult;StdCall;
+    function GetExtent(dwDrawAspect: DWORD; out size: TPoint): HResult;StdCall;
+    function Advise(const advSink: IAdviseSink; out dwConnection: Longint): HResult;StdCall;
+    function Unadvise(dwConnection: DWORD): HResult;StdCall;
+    function EnumAdvise(out enumAdvise: IEnumStatData): HResult;StdCall;
+    function GetMiscStatus(dwAspect: DWORD; out dwStatus: DWORD): HResult;StdCall;
+    function SetColorScheme(const logpal: TLogPalette): HResult;StdCall;
+  end;
+  
+  IDropTarget = interface(IUnknown)
+    ['{00000122-0000-0000-C000-000000000046}']
+    function DragEnter(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall;
+    function DragOver(grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD): HResult;StdCall;
+    function DragLeave: HResult;StdCall;
+    function Drop(const dataObj: IDataObject; grfKeyState: DWORD; pt: TPoint; var dwEffect: DWORD):HResult;StdCall;
+  end;
+  
+  IOleInPlaceUIWindow = interface(IOleWindow)
+    ['{00000115-0000-0000-C000-000000000046}']
+    function GetBorder(out rectBorder: TRect):HResult;StdCall;
+    function RequestBorderSpace(const borderwidths: TRect):HResult;StdCall;
+    function SetBorderSpace(const borderwidths: TRect):HResult;StdCall;
+    function SetActiveObject(const activeObject: IOleInPlaceActiveObject;pszObjName: POleStr):HResult;StdCall;
+  end;
+  
+  IOleInPlaceActiveObject = interface(IOleWindow)
+    ['{00000117-0000-0000-C000-000000000046}']
+    function TranslateAccelerator(var msg: TMsg):HResult;StdCall;
+    function OnFrameWindowActivate(fActivate: BOOL):HResult;StdCall;
+    function OnDocWindowActivate(fActivate: BOOL):HResult;StdCall;
+    function ResizeBorder(const rcBorder: TRect; const uiWindow: IOleInPlaceUIWindow; fFrameWindow: BOOL):HResult;StdCall;
+    function EnableModeless(fEnable: BOOL):HResult;StdCall;
+  end;
+
+  IOleInPlaceFrame = interface(IOleInPlaceUIWindow)
+    ['{00000116-0000-0000-C000-000000000046}']
+    function InsertMenus(hmenuShared: HMenu; var menuWidths: TOleMenuGroupWidths): HResult;StdCall;
+    function SetMenu(hmenuShared: HMenu; holemenu: HMenu; hwndActiveObject: HWnd): HResult;StdCall;
+    function RemoveMenus(hmenuShared: HMenu): HResult;StdCall;
+    function SetStatusText(pszStatusText: POleStr): HResult;StdCall;
+    function EnableModeless(fEnable: BOOL): HResult;StdCall;
+    function TranslateAccelerator(var msg: TMsg; wID: Word): HResult;StdCall;
+  end;
+  
+  tagOIFI = record
+    cb: UINT;
+    fMDIApp: BOOL;
+    hwndFrame: HWND;
+    haccel: HAccel;
+    cAccelEntries: UINT;
+  end;
+  TOleInPlaceFrameInfo = tagOIFI;
+  POleInPlaceFrameInfo = ^TOleInPlaceFrameInfo;
+  OLEINPLACEFRAMEINFO = tagOIFI;
+
+{ ole2.h }
+
+  type
+    WINOLEAPI = HResult;
+    TLCID = DWORD;
+
+  const
+     OLEIVERB_PRIMARY = 0;     
+     OLEIVERB_SHOW = -(1);     
+     OLEIVERB_OPEN = -(2);     
+     OLEIVERB_HIDE = -(3);     
+     OLEIVERB_UIACTIVATE = -(4);     
+     OLEIVERB_INPLACEACTIVATE = -(5);     
+     OLEIVERB_DISCARDUNDOSTATE = -(6);     
+  { for OleCreateEmbeddingHelper flags; roles low word; options high word }
+     EMBDHLP_INPROC_HANDLER = $0000;     
+     EMBDHLP_INPROC_SERVER = $0001;     
+     EMBDHLP_CREATENOW = $00000000;     
+     EMBDHLP_DELAYCREATE = $00010000;     
+  { extended create function flags  }
+     OLECREATE_LEAVERUNNING = $00000001;     
+  { pull the MIDL generated header  }
+
+  function OleBuildVersion:DWORD;cdecl;external 'ole32.dll' name 'OleBuildVersion';
+
+  { helper functions  }
+  function ReadClassStg(pStg:IStorage; pclsid:PCLSID):WINOLEAPI;cdecl;external 'ole32.dll' name 'ReadClassStg';
+
+  function WriteClassStg(pStg:IStorage;const rclsid:TLCID):WINOLEAPI;cdecl;external 'ole32.dll' name 'WriteClassStg';
+
+  function ReadClassStm(pStm:IStream; pclsid:PCLSID):WINOLEAPI;cdecl;external 'ole32.dll' name 'ReadClassStm';
+
+  function WriteClassStm(pStm:IStream;const rclsid:TLCID):WINOLEAPI;cdecl;external 'ole32.dll' name 'WriteClassStm';
+
+  function WriteFmtUserTypeStg(pstg:IStorage; cf:CLIPFORMAT; lpszUserType:LPOLESTR):WINOLEAPI;cdecl;external 'ole32.dll' name 'WriteFmtUserTypeStg';
+
+  function ReadFmtUserTypeStg(pstg:IStorage; pcf:PCLIPFORMAT;out lplpszUserType:POleStr):WINOLEAPI;cdecl;external 'ole32.dll' name 'ReadFmtUserTypeStg';
+
+  { init/term  }
+  function OleInitialize(pvReserved:LPVOID):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleInitialize';
+
+  procedure OleUninitialize;cdecl;external 'ole32.dll' name 'OleUninitialize';
+
+  { APIs to query whether (Embedded/Linked) object can be created from
+     the data object  }
+  function OleQueryLinkFromData(pSrcDataObject:IDataObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleQueryLinkFromData';
+
+  function OleQueryCreateFromData(pSrcDataObject:IDataObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleQueryCreateFromData';
+
+  { Object creation APIs  } function OleCreate(const rclsid:TLCID; const riid:TIID; 
+  renderopt:DWORD; pFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+  pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 
+  'OleCreate';
+
+  function OleCreateEx(const rclsid:TLCID; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; cFormats:ULONG; 
+             rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateEx';
+
+  function OleCreateFromData(pSrcDataObj:IDataObject; const riid:TIID; renderopt:DWORD; pFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateFromData';
+
+  function OleCreateFromDataEx(pSrcDataObj:IDataObject; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; cFormats:ULONG; 
+             rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateFromDataEx';
+
+  function OleCreateLinkFromData(pSrcDataObj:IDataObject; const riid:TIID; renderopt:DWORD; pFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLinkFromData';
+
+  function OleCreateLinkFromDataEx(pSrcDataObj:IDataObject; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; cFormats:ULONG; 
+             rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLinkFromDataEx';
+
+  function OleCreateStaticFromData(pSrcDataObj:IDataObject; const iid:TIID; renderopt:DWORD; pFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateStaticFromData';
+
+  function OleCreateLink(pmkLinkSrc:IMoniker; constriid:TIID; renderopt:DWORD; lpFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLink';
+
+  function OleCreateLinkEx(pmkLinkSrc:IMoniker; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; cFormats:ULONG; 
+             rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLinkEx';
+
+  function OleCreateLinkToFile(lpszFileName:POleStr; const riid:TIID; renderopt:DWORD; lpFormatEtc:LPFORMATETC; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLinkToFile';
+
+  function OleCreateLinkToFileEx(lpszFileName:POleStr; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; cFormats:ULONG; 
+             rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; pClientSite:IOleClientSite; 
+             pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateLinkToFileEx';
+
+  function OleCreateFromFile(const rclsid:TLCID; lpszFileName:POleStr; const riid:TIID; renderopt:DWORD; lpFormatEtc:LPFORMATETC; 
+             pClientSite:IOleClientSite; pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateFromFile';
+
+  function OleCreateFromFileEx(const rclsid:TLCID; lpszFileName:POleStr; const riid:TIID; dwFlags:DWORD; renderopt:DWORD; 
+             cFormats:ULONG; rgAdvf:PDWORD; rgFormatEtc:LPFORMATETC; lpAdviseSink:IAdviseSink; rgdwConnection:PDWORD; 
+             pClientSite:IOleClientSite; pStg:IStorage; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateFromFileEx';
+
+  function OleLoad(pStg:IStorage; const riid:TIID; pClientSite:IOleClientSite; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleLoad';
+
+  function OleSave(pPS:IPersistStorage; pStg:IStorage; fSameAsLoad:BOOL):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSave';
+
+  function OleLoadFromStream(pStm:IStream; const iidInterface:TIID; out ppvObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleLoadFromStream';
+
+  function OleSaveToStream(pPStm:IPersistStream; pStm:IStream):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSaveToStream';
+
+  function OleSetContainedObject(pUnknown:IUnknown; fContained:BOOL):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSetContainedObject';
+
+  function OleNoteObjectVisible(pUnknown:IUnknown; fVisible:BOOL):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleNoteObjectVisible';
+
+  { Drag/Drop APIs  }
+  function RegisterDragDrop(hwnd:HWND; pDropTarget:IDropTarget):WINOLEAPI;cdecl;external 'ole32.dll' name 'RegisterDragDrop';
+
+  function RevokeDragDrop(hwnd:HWND):WINOLEAPI;cdecl;external 'ole32.dll' name 'RevokeDragDrop';
+
+  function DoDragDrop(pDataObj:IDataObject; pDropSource:IDropSource; dwOKEffects:DWORD; pdwEffect:LPDWORD):WINOLEAPI;cdecl;external 'ole32.dll' name 'DoDragDrop';
+
+  { Clipboard APIs  }
+  function OleSetClipboard(pDataObj:IDataObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSetClipboard';
+
+  function OleGetClipboard(out ppDataObj:IDataObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleGetClipboard';
+
+  function OleFlushClipboard:WINOLEAPI;cdecl;external 'ole32.dll' name 'OleFlushClipboard';
+
+  function OleIsCurrentClipboard(pDataObj:IDataObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleIsCurrentClipboard';
+  
+type
+  HOLEMENU = HMenu;
+
+  { InPlace Editing APIs  }
+  function OleCreateMenuDescriptor(hmenuCombined:HMENU; lpMenuWidths:LPOLEMENUGROUPWIDTHS):HOLEMENU;cdecl;external 'ole32.dll' name 'OleCreateMenuDescriptor';
+
+  function OleSetMenuDescriptor(holemenu:HOLEMENU; hwndFrame:HWND; hwndActiveObject:HWND; lpFrame:IOleInPlaceFrame; lpActiveObj:IOleInPlaceActiveObject):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSetMenuDescriptor';
+
+  function OleDestroyMenuDescriptor(holemenu:HOLEMENU):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleDestroyMenuDescriptor';
+
+  function OleTranslateAccelerator(lpFrame:IOleInPlaceFrame; lpFrameInfo:TOleInPlaceFrameInfo; lpmsg:LPMSG):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleTranslateAccelerator';
+
+  { Helper APIs  }
+  function OleDuplicateData(hSrc:HANDLE; cfFormat:CLIPFORMAT; uiFlags:UINT):HANDLE;cdecl;external 'ole32.dll' name 'OleDuplicateData';
+
+  function OleDraw(pUnknown:IUnknown; dwAspect:DWORD; hdcDraw:HDC;const lprcBounds:TRect):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleDraw';
+
+  function OleRun(pUnknown:IUnknown):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleRun';
+
+  function OleIsRunning(pObject:IOleObject):BOOL;cdecl;external 'ole32.dll' name 'OleIsRunning';
+
+  function OleLockRunning(pUnknown:IUnknown; fLock:BOOL; fLastUnlockCloses:BOOL):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleLockRunning';
+
+  procedure ReleaseStgMedium(_para1:LPSTGMEDIUM);cdecl;external 'ole32.dll' name 'ReleaseStgMedium';
+
+  function CreateOleAdviseHolder(out ppOAHolder:IOleAdviseHolder):WINOLEAPI;cdecl;external 'ole32.dll' name 'CreateOleAdviseHolder';
+
+  function OleCreateDefaultHandler(const clsid:TLCID; pUnkOuter:IUnknown; const riid:TIID; out lplpObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateDefaultHandler';
+
+  function OleCreateEmbeddingHelper(const clsid:TLCID; pUnkOuter:IUnknown; flags:DWORD; pCF:IClassFactory; const riid:TIID; 
+             out lplpObj):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleCreateEmbeddingHelper';
+
+  function IsAccelerator(hAccel:HACCEL; cAccelEntries:longint; lpMsg:LPMSG; lpwCmd:PWORD):BOOL;cdecl;external 'ole32.dll' name 'IsAccelerator';
+
+  { Icon extraction Helper APIs  }
+  function OleGetIconOfFile(lpszPath:LPOLESTR; fUseFileAsLabel:BOOL):HGLOBAL;cdecl;external 'ole32.dll' name 'OleGetIconOfFile';
+
+  function OleGetIconOfClass(const rclsid:TLCID; lpszLabel:LPOLESTR; fUseTypeAsLabel:BOOL):HGLOBAL;cdecl;external 'ole32.dll' name 'OleGetIconOfClass';
+
+  function OleMetafilePictFromIconAndLabel(hIcon:HICON; lpszLabel:LPOLESTR; lpszSourceFile:LPOLESTR; iIconIndex:UINT):HGLOBAL;cdecl;external 'ole32.dll' name 'OleMetafilePictFromIconAndLabel';
+
+  { Registration Database Helper APIs  }
+  function OleRegGetUserType(const clsid:TLCID; dwFormOfType:DWORD;out pszUserType:POleStr):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleRegGetUserType';
+
+  function OleRegGetMiscStatus(const clsid:TLCID; dwAspect:DWORD; pdwStatus:PDWORD):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleRegGetMiscStatus';
+
+  function OleRegEnumFormatEtc(const clsid:TLCID; dwDirection:DWORD;out ppenum:IEnumFormatEtc):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleRegEnumFormatEtc';
+
+  function OleRegEnumVerbs(const clsid:TLCID;out ppenum:IEnumOLEVERB):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleRegEnumVerbs';
+
+{$ifdef _MAC}
+  { WlmOLE helper APIs  }
+
+  function WlmOleCheckoutMacInterface(pUnk:IUnknown; out ppv):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleCheckoutMacInterface';
+
+  function WlmOleCheckinMacInterface(pUnk:IUnknown):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleCheckinMacInterface';
+
+  function WlmOleWrapMacInterface(pUnk:IUnknown; const riid:TIID; out ppv):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleWrapMacInterface';
+
+  function WlmOleUnwrapMacInterface(pv:LPVOID):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleUnwrapMacInterface';
+
+  function WlmOleCheckoutWinInterface(pUnk:LPVOID; ppv:PIUnknown):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleCheckoutWinInterface';
+
+  function WlmOleCheckinWinInterface(pUnk:LPVOID):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleCheckinWinInterface';
+
+  function WlmOleWrapWinInterface(pUnk:LPVOID; const riid:TIID; ppv:PIUnknown):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleWrapWinInterface';
+
+  function WlmOleUnwrapWinInterface(pv:LPVOID):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleUnwrapWinInterface';
+
+  procedure WlmOleVersion;cdecl;external 'ole32.dll' name 'WlmOleVersion';
+
+  procedure WlmOleSetInPlaceWindow(hwnd:HWND);cdecl;external 'ole32.dll' name 'WlmOleSetInPlaceWindow';
+
+  { typedef HRESULT (STDAPICALLTYPE* OLEWRAPPROC) (TIID riid, LPVOID* ppvWin, LPVOID* ppvMac); }
+  function WlmOleRegisterUserWrap(procNew:OLEWRAPPROC; pprocOld:POLEWRAPPROC):WINOLEAPI;cdecl;external 'ole32.dll' name 'WlmOleRegisterUserWrap';
+
+{$endif}
+  { OLE 1.0 conversion APIS  }
+  {**** OLE 1.0 OLESTREAM declarations ************************************ }
+
+  type
+     LPOLESTREAM = ^_OLESTREAM;
+     _OLESTREAMVTBL = record
+       Get : function (p : POleStr;out o;dw : DWORD) : DWORD;
+       Put : function (p : POleStr;const o;dw : DWORD) : DWORD;
+     end;
+     OLESTREAMVTBL =  _OLESTREAMVTBL;
+
+     LPOLESTREAMVTBL = OLESTREAMVTBL;
+
+     _OLESTREAM = record
+          lpstbl : LPOLESTREAMVTBL;
+       end;
+     OLESTREAM = _OLESTREAM;
+(* Const before type ignored *)
+
+  function OleConvertOLESTREAMToIStorage(_lpolestream:LPOLESTREAM; pstg:IStorage; ptd:PDVTARGETDEVICE):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleConvertOLESTREAMToIStorage';
+
+  function OleConvertIStorageToOLESTREAM(pstg:IStorage; lpolestream:LPOLESTREAM):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleConvertIStorageToOLESTREAM';
+
+  { Storage Utility APIs  }
+  function GetHGlobalFromILockBytes(plkbyt:ILockBytes;out phglobal:HGLOBAL):WINOLEAPI;cdecl;external 'ole32.dll' name 'GetHGlobalFromILockBytes';
+
+  function CreateILockBytesOnHGlobal(hGlobal:HGLOBAL; fDeleteOnRelease:BOOL;out pplkbyt:ILockBytes):WINOLEAPI;cdecl;external 'ole32.dll' name 'CreateILockBytesOnHGlobal';
+
+  function GetHGlobalFromStream(pstm:IStream;out phglobal:HGLOBAL):WINOLEAPI;cdecl;external 'ole32.dll' name 'GetHGlobalFromStream';
+
+  function CreateStreamOnHGlobal(hGlobal:HGLOBAL; fDeleteOnRelease:BOOL;out stm:IStream):WINOLEAPI;cdecl;external 'ole32.dll' name 'CreateStreamOnHGlobal';
+
+  { ConvertTo APIS  }
+  function OleDoAutoConvert(pStg:IStorage; pClsidNew:LPCLSID):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleDoAutoConvert';
+
+  function OleGetAutoConvert(const clsidOld:TLCID; pClsidNew:LPCLSID):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleGetAutoConvert';
+
+  function OleSetAutoConvert(const clsidOld:TLCID; clsidNew:TLCID):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleSetAutoConvert';
+
+  function GetConvertStg(pStg:IStorage):WINOLEAPI;cdecl;external 'ole32.dll' name 'GetConvertStg';
+
+  function SetConvertStg(pStg:IStorage; fConvert:BOOL):WINOLEAPI;cdecl;external 'ole32.dll' name 'SetConvertStg';
+
+  { Presentation data to OLESTREAM }
+  {      format }
+  {      width }
+  {      height }
+  {      size bytes }
+  {      bits }
+  function OleConvertIStorageToOLESTREAMEx(pstg:IStorage; cfFormat:CLIPFORMAT; lWidth:LONG; lHeight:LONG; dwSize:DWORD; 
+             pmedium:LPSTGMEDIUM; polestm:LPOLESTREAM):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleConvertIStorageToOLESTREAMEx';
 
+  { Presentation data from OLESTREAM }
+  {      format }
+  {      width }
+  {      height }
+  {      size bytes }
+  function OleConvertOLESTREAMToIStorageEx(polestm:LPOLESTREAM; pstg:IStorage; pcfFormat:PCLIPFORMAT; plwWidth:PLONG; plHeight:PLONG; 
+             pdwSize:PDWORD; pmedium:LPSTGMEDIUM):WINOLEAPI;cdecl;external 'ole32.dll' name 'OleConvertOLESTREAMToIStorageEx';
 
 
 const

+ 4 - 1
packages/extra/winunits/jediapilib.inc

@@ -35,7 +35,10 @@
 { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
 {                                                                              }
 {******************************************************************************}
-{$A+,Z4}
+{$ifndef FPC}
+{$A+}
+{$endif FPC}
+{$Z4}
 
 // This file is intended for C header conversions.
 // It defines several mutually exclusive IFDEFs which determine

+ 14 - 0
tests/webtbs/tw3820.pp

@@ -0,0 +1,14 @@
+{ %target=win32}
+{ Source provided for Free Pascal Bug Report 3820 }
+{ Submitted by "Matthias Hryniszak" on  2005-03-24 }
+{ e-mail: [email protected] }
+program Test;
+
+uses
+  ActiveX;
+  
+begin
+  // the following imports are missing:
+  OleInitialize(nil);
+  OleUninitialize;
+end.