Explorar el Código

* propvariant and friends.

git-svn-id: trunk@10185 -
marco hace 17 años
padre
commit
a259154511

+ 225 - 1
packages/winunits-base/src/activex.pp

@@ -44,6 +44,11 @@ TYPE
      PROPID = ULONG;
      TPROPID= PROPID;
      PPROPID= ^PROPID;
+     VARIANT_BOOL        = short;
+     _VARIANT_BOOL       = VARIANT_BOOL;
+     CY			 = CURRENCY;
+     DATE		 = DOUBLE;
+     BSTR		 = POLESTR;
 
 CONST
    GUID_NULL  : TGUID =  '{00000000-0000-0000-0000-000000000000}';
@@ -1529,9 +1534,146 @@ TYPE
   CUSTDATA                       = tagCUSTDATA;
   LPCUSTDATA                     = ^CUSTDATA;
 
-//  CURRENCY                       = CY;
+  PPROPVARIANT		         = ^TPROPVARIANT;
 
 
+   tagVersionedStream = record
+        guidVersion : TGUID;
+        pStream : pointer; {IStream}
+     end;
+   VERSIONEDSTREAM = tagVersionedStream;
+   TVERSIONEDSTREAM = tagVersionedStream;
+   LPVERSIONEDSTREAM = tagVersionedStream;
+   PVERSIONEDSTREAM = ^TagVersionedStream;
+
+
+   LPSAFEARRAY = ^SAFEARRAY;
+   tagDEC = record //  simpler remoting variant without nested unions. see wtypes.h
+         wReserved : ushort;
+         scale,
+         sign : byte;
+         hi32 : ULONG;
+         lo64 : ULONGLONG;
+         end;
+   TDECIMAL=tagDEC;
+   PDecimal=^TDECIMAL;
+
+   tagCAC = record
+        cElems : ULONG;
+        pElems : pCHAR;
+     end;
+   CAC = tagCAC;
+   tagCAUB = record
+        cElems : ULONG;
+        pElems : pUCHAR;
+     end;
+   CAUB = tagCAUB;
+   tagCAI = record
+        cElems : ULONG;
+        pElems : pSHORT;
+     end;
+   CAI = tagCAI;
+   tagCAUI = record
+        cElems : ULONG;
+        pElems : pUSHORT;
+     end;
+   CAUI = tagCAUI;
+   tagCAL = record
+        cElems : ULONG;
+        pElems : pLONG;
+     end;
+   CAL = tagCAL;
+   tagCAUL = record
+        cElems : ULONG;
+        pElems : pULONG;
+     end;
+   CAUL = tagCAUL;
+   tagCAFLT = record
+        cElems : ULONG;
+        pElems : pSingle;
+     end;
+   CAFLT = tagCAFLT;
+
+   tagCADBL = record
+        cElems : ULONG;
+        pElems : ^DOUBLE;
+     end;
+   CADBL = tagCADBL;
+   tagCACY = record
+        cElems : ULONG;
+        pElems : ^CY;
+     end;
+   CACY = tagCACY;
+   tagCADATE = record
+        cElems : ULONG;
+        pElems : ^DATE;
+     end;
+   CADATE = tagCADATE;
+   tagCABSTR = record
+        cElems : ULONG;
+        pElems : ^BSTR;
+     end;
+   CABSTR = tagCABSTR;
+   tagCABSTRBLOB = record
+        cElems : ULONG;
+        pElems : ^BSTRBLOB;
+     end;
+   CABSTRBLOB = tagCABSTRBLOB;
+   tagCABOOL = record
+        cElems : ULONG;
+        pElems : ^VARIANT_BOOL;
+     end;
+   CABOOL = tagCABOOL;
+   tagCASCODE = record
+        cElems : ULONG;
+        pElems : ^SCODE;
+     end;
+   CASCODE = tagCASCODE;
+   tagCAPROPVARIANT = record
+        cElems : ULONG;
+        pElems : ^PROPVARIANT;
+     end;
+   CAPROPVARIANT = tagCAPROPVARIANT;
+   tagCAH = record
+        cElems : ULONG;
+        pElems : ^LARGE_INTEGER;
+     end;
+   CAH = tagCAH;
+   tagCAUH = record
+        cElems : ULONG;
+        pElems : ^ULARGE_INTEGER;
+     end;
+   CAUH = tagCAUH;
+   tagCALPSTR = record
+        cElems : ULONG;
+        pElems : ^LPSTR;
+     end;
+   CALPSTR = tagCALPSTR;
+   tagCALPWSTR = record
+        cElems : ULONG;
+        pElems : ^LPWSTR;
+     end;
+   CALPWSTR = tagCALPWSTR;
+   tagCAFILETIME = record
+        cElems : ULONG;
+        pElems : ^FILETIME;
+     end;
+   CAFILETIME = tagCAFILETIME;
+   tagCACLIPDATA = record
+        cElems : ULONG;
+        pElems : ^CLIPDATA;
+     end;
+   CACLIPDATA = tagCACLIPDATA;
+   tagCACLSID = record
+        cElems : ULONG;
+        pElems : ^CLSID;
+     end;
+   CACLSID = tagCACLSID;
+
+   PROPVAR_PAD1 = WORD;
+   PROPVAR_PAD2 = WORD;
+   PROPVAR_PAD3 = WORD;
+
 // Forward interfaces.
 
    IStream             = Types.IStream;
@@ -1548,6 +1690,88 @@ TYPE
    ISynchronize        = Interface;
    ITypeLib            = Interface;
 
+   TPROPVARIANT = record
+          vt : VARTYPE;
+          wReserved1 : PROPVAR_PAD1;
+          wReserved2 : PROPVAR_PAD2;
+          wReserved3 : PROPVAR_PAD3;
+          case longint of
+                 0 : ( cVal : CHAR );
+                 1 : ( bVal : UCHAR );
+                 2 : ( iVal : SHORT );
+                 3 : ( uiVal : USHORT );
+                 4 : ( lVal : LONG );
+                 5 : ( ulVal : ULONG );
+                 6 : ( intVal : longINT );
+                 7 : ( uintVal : UINT );
+                 8 : ( hVal : LARGE_INTEGER );
+                 9 : ( uhVal : ULARGE_INTEGER );
+                 10 : ( fltVal : SINGLE );
+                 11 : ( dblVal : DOUBLE );
+                 12 : ( boolVal : VARIANT_BOOL );
+                 13 : ( bool : _VARIANT_BOOL );
+                 14 : ( scode : SCODE );
+                 15 : ( cyVal : CY );
+                 16 : ( date : DATE );
+                 17 : ( filetime : FILETIME );
+                 18 : ( puuid : ^CLSID );
+                 19 : ( pclipdata : ^CLIPDATA );
+                 20 : ( bstrVal : BSTR );
+                 21 : ( bstrblobVal : BSTRBLOB );
+                 22 : ( blob : BLOB );
+                 23 : ( pszVal : LPSTR );
+                 24 : ( pwszVal : LPWSTR );
+                 25 : ( punkVal : pointer; { IUnknown to avoid Data types which require initialization/finalization can't be used in variant records});
+                 26 : ( pdispVal : pointer; {IDispatch} );
+                 27 : ( pStream : pointer {IStream} );
+                 28 : ( pStorage : pointer{IStorage} );
+                 29 : ( pVersionedStream : LPVERSIONEDSTREAM );
+                 30 : ( parray : LPSAFEARRAY );
+                 31 : ( cac : CAC );
+                 32 : ( caub : CAUB );
+                 33 : ( cai : CAI );
+                 34 : ( caui : CAUI );
+                 35 : ( cal : CAL );
+                 36 : ( caul : CAUL );
+                 37 : ( cah : CAH );
+                 38 : ( cauh : CAUH );
+                 39 : ( caflt : CAFLT );
+                 40 : ( cadbl : CADBL );
+                 41 : ( cabool : CABOOL );
+                 42 : ( cascode : CASCODE );
+                 43 : ( cacy : CACY );
+                 44 : ( cadate : CADATE );
+                 45 : ( cafiletime : CAFILETIME );
+                 46 : ( cauuid : CACLSID );
+                 47 : ( caclipdata : CACLIPDATA );
+                 48 : ( cabstr : CABSTR );
+                 49 : ( cabstrblob : CABSTRBLOB );
+                 50 : ( calpstr : CALPSTR );
+                 51 : ( calpwstr : CALPWSTR );
+                 52 : ( capropvar : CAPROPVARIANT );
+                 53 : ( pcVal : pCHAR );
+                 54 : ( pbVal : pUCHAR );
+                 55 : ( piVal : pSHORT );
+                 56 : ( puiVal : pUSHORT );
+                 57 : ( plVal : pLONG );
+                 58 : ( pulVal : pULONG );
+                 59 : ( pintVal : plongint );
+                 60 : ( puintVal : pUINT );
+                 61 : ( pfltVal : psingle );
+                 62 : ( pdblVal : pDOUBLE );
+                 63 : ( pboolVal : ^VARIANT_BOOL );
+                 64 : ( pdecVal : pDECIMAL );
+                 65 : ( pscode : ^SCODE );
+                 66 : ( pcyVal : ^CY );
+                 67 : ( pdate : ^DATE );
+                 68 : ( pbstrVal : ^TBSTR );
+                 69 : ( ppunkVal : ^IUnknown );
+                 70 : ( ppdispVal : ^IDispatch );
+                 71 : ( pparray : ^LPSAFEARRAY );
+                 72 : ( pvarVal : ^PROPVARIANT );
+             end;
+     PROPVARIANT=TPROPVARIANT;
+
 // Unknwn.idl
 
 // IUnknown is in classesh.inc

+ 2 - 2
packages/winunits-base/src/commctrl.pp

@@ -657,7 +657,7 @@ function ImageList_GetDragImage(ppt:PPOINT;pptHotspot:PPOINT):HIMAGELIST; stdcal
 Procedure ImageList_RemoveAll(himl:HIMAGELIST);
 
 // Macro 14
-Procedure ImageList_ExtractIcon(hi:longint; {dummy?} himl:HIMAGELIST;i:cint);
+Procedure ImageList_ExtractIcon(hi:longint; himl:HIMAGELIST;i:longint);
 
 
 // Macro 15
@@ -9152,7 +9152,7 @@ End;
 // Macro 14
 // #define     ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
 
-Procedure ImageList_ExtractIcon(hi:longint; {dummy?} himl:HIMAGELIST;i:cint);
+Procedure ImageList_ExtractIcon(hi:longint;  himl:HIMAGELIST;i:longint);
 
 Begin
  ImageList_GetIcon(himl, i,0);

+ 1 - 1
packages/winunits-base/src/shlobj.pp

@@ -1799,7 +1799,7 @@ Type
  
     IShellLinkA  = Interface(IUnknown)
         ['{000214EE-0000-0000-C000-000000000046}']
-        function GetPath(pszFile:LPSTR; cch:longint; pfd:pWIN32_FIND_DATA; fFlags:DWORD):HRESULT;StdCall;
+        function GetPath(pszFile:LPSTR; cch:longint;var  pfd:WIN32_FIND_DATA; fFlags:DWORD):HRESULT;StdCall;
         function GetIDList(var ppidl:LPITEMIDLIST):HRESULT;StdCall;
         function SetIDList(pidl:LPCITEMIDLIST):HRESULT;StdCall;
         function GetDescription(pszName:LPSTR; cch:longint):HRESULT;StdCall;

+ 18 - 2
rtl/win/wininc/struct.inc

@@ -6952,8 +6952,7 @@
 
      TWOHandleArray = array[0..MAXIMUM_WAIT_OBJECTS-1] of HANDLE;
      PWOHandleArray = ^TWOHandleArray;
-
- MMRESULT = Longint;
+     MMRESULT = Longint;
 
 type
   PWaveFormatEx = ^TWaveFormatEx;
@@ -7207,6 +7206,23 @@ type
   GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
   TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;
 
+  tagBSTRBLOB = record
+                  cbsize : ULONG;
+		  pdata  : pbyte;
+                  end;
+  BSTRBLOB=TagBSTRBlob;
+  TBSTRBLOB=BSTRBLOB;
+  PBSTRBLOB=^BSTRBLOB;
+
+  tagCLIPDATA = record
+                  cbsize : ULONG;
+		  ulClipFmt : long;
+		  pclipdata : pbyte;
+                  end;
+  CLIPDATA=TagCLIPDATA;
+  TCLIPDATA=CLIPDATA;
+  PCLIPDATA=^CLIPDATA;
+  
 {$endif read_interface}