Commit eb5a29b6 authored by Francis Beaudet's avatar Francis Beaudet Committed by Alexandre Julliard

Implemented the OleCreateFontIndirect method and the associated COM

object. That object supports the IFont and IDispatch interfaces.
parent 3b092846
#ifndef _WINE_INTERFACES_H
#define _WINE_INTERFACES_H
/* FIXME: This is not a standard Windows header. Move the contents of this file to the right place and then delete it. */
#include "ole.h"
#include "ole2.h"
#include "compobj.h"
/* FIXME: move to the right place. Some belong to aoidl.h some to oleauto.h */
DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0);
DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0);
DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0);
DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0);
DEFINE_OLEGUID(IID_IEnumVariant, 0x00020404,0,0);
DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0);
DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0);
DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0);
DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0);
DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0);
DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0);
DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
#include "objbase.h"
#endif /*_WINE_INTERFACES_H*/
#ifndef __WINE_OAIDL_H
#define __WINE_OAIDL_H
#include "wine/obj_base.h"
/* the following depend only on obj_base.h */
#include "wine/obj_oleaut.h"
#endif /* __WINE_OAIDL_H */
#ifndef __WINE_OCIDL_H
#define __WINE_OCIDL_H
#include "wine/obj_base.h"
/* the following depend only on obj_base.h */
#include "wine/obj_olefont.h"
#endif /* __WINE_OCIDL_H */
......@@ -19,8 +19,6 @@
#define OLESTR32(x) L##x /* probably wrong */
#define OLESTR WINELIB_NAME(OLESTR)
typedef LONG DISPID;
/* object types */
#define OT_LINK 1
#define OT_EMBEDDED 2
......
......@@ -3,6 +3,7 @@
#include <ole.h>
#include "mapidefs.h"
#include "oaidl.h"
BSTR16 WINAPI SysAllocString16(LPOLESTR16);
BSTR32 WINAPI SysAllocString32(LPOLESTR32);
......@@ -23,9 +24,6 @@ int WINAPI SysStringLen16(BSTR16);
int WINAPI SysStringLen32(BSTR32);
#define SysStringLen WINELIB_NAME(SysStringLen)
typedef void ITypeLib;
typedef ITypeLib * LPTYPELIB;
/*****************************************************************
* SafeArray defines and structs
*/
......@@ -146,141 +144,6 @@ SafeArrayRedim32(SAFEARRAY *psa, SAFEARRAYBOUND *psaboundNew);
#define SafeArrayRedim WINELIB_NAME(SafeArrayRedim)
/*
* Data types for Variants.
*/
enum VARENUM {
VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
VT_DISPATCH = 9,
VT_ERROR = 10,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_UNKNOWN = 13,
VT_DECIMAL = 14,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_INT = 22,
VT_UINT = 23,
VT_VOID = 24,
VT_HRESULT = 25,
VT_PTR = 26,
VT_SAFEARRAY = 27,
VT_CARRAY = 28,
VT_USERDEFINED = 29,
VT_LPSTR = 30,
VT_LPWSTR = 31,
VT_FILETIME = 64,
VT_BLOB = 65,
VT_STREAM = 66,
VT_STORAGE = 67,
VT_STREAMED_OBJECT = 68,
VT_STORED_OBJECT = 69,
VT_BLOB_OBJECT = 70,
VT_CF = 71,
VT_CLSID = 72,
VT_VECTOR = 0x1000,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000,
VT_RESERVED = 0x8000,
VT_ILLEGAL = 0xffff,
VT_ILLEGALMASKED = 0xfff,
VT_TYPEMASK = 0xfff
};
/* the largest valide type
*/
#define VT_MAXVALIDTYPE VT_CLSID
/*
* Declarations of the VARIANT structure and the VARIANT APIs.
*/
/* S_OK : Success.
* DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
* DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
* DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
* E_INVALIDARG : One argument is invalid.
* E_OUTOFMEMORY : Memory could not be allocated for the conversion.
* DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
*/
typedef struct tagVARIANT VARIANT;
typedef struct tagVARIANT VARIANTARG;
struct tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
/* By value.
*/
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
INT32 intVal;
UINT32 uintVal;
BYTE bVal;
short iVal;
long lVal;
float fltVal;
double dblVal;
VARIANT_BOOL boolVal;
SCODE scode;
DATE date;
BSTR32 bstrVal;
CY cyVal;
/*
DECIMAL decVal;
IUnknown* punkVal;
IDispatch* pdispVal;
SAFEARRAY* parray;
*/
/* By reference
*/
CHAR* pcVal;
USHORT* puiVal;
ULONG* pulVal;
INT32* pintVal;
UINT32* puintVal;
BYTE* pbVal;
short* piVal;
long* plVal;
float* pfltVal;
double* pdblVal;
VARIANT_BOOL* pboolVal;
SCODE* pscode;
DATE* pdate;
BSTR32* pbstrVal;
VARIANT* pvarVal;
PVOID byref;
CY* pcyVal;
/*
DECIMAL* pdecVal;
IUnknown** ppunkVal;
IDispatch** ppdispVal;
SAFEARRAY** pparray;
*/
} u;
};
/* These are macros that help accessing the VARIANT date type.
*/
#define V_UNION(A, B) ((A)->u.B)
......
#ifndef __WINE_OLECTL_H
#define __WINE_OLECTL_H
#include "wintypes.h"
#include "ole.h"
#define WINOLECTLAPI INT32 WINAPI
/*
* FONTDESC is used as an OLE encapsulation of the GDI fonts
*/
typedef struct tagFONTDESC {
UINT32 cbSizeofstruct;
LPOLESTR32 lpstrName;
CY cySize;
SHORT sWeight;
SHORT sCharset;
BOOL32 fItalic;
BOOL32 fUnderline;
BOOL32 fStrikeThrough;
} FONTDESC, *LPFONTDESC;
WINOLECTLAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, VOID** ppvObj);
#endif /* __WINE_OLECTL_H */
/*
* Defines the COM interfaces and APIs related to OLE automation support.
*
* Depends on 'obj_base.h'.
*/
#ifndef __WINE_WINE_OBJ_OLEAUT_H
#define __WINE_WINE_OBJ_OLEAUT_H
#include "windows.h"
#include "wintypes.h"
/*****************************************************************************
* Predeclare the interfaces
*/
DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0);
typedef struct IDispatch IDispatch,*LPDISPATCH;
DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0);
typedef struct ITypeInfo ITypeInfo,*LPTYPEINFO;
DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0);
typedef struct ITypeLib ITypeLib,*LPTYPELIB;
DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0);
typedef struct ITypeComp ITypeComp,*LPTYPECOMP;
DEFINE_OLEGUID(IID_IEnumVariant, 0x00020404,0,0);
typedef struct IenumVariant IEnumVariant,*LPENUMVARIANT;
DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0);
typedef struct ICreateTypeInfo ICreateTypeInfo,*LPCREATETYPEINFO;
DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0);
typedef struct ICreateTypeLib ICreateTypeLib,*LPCREATETYPELIB;
DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0);
typedef struct ICreateTypeInfo2 ICreateTypeInfo2,*LPCREATETYPEINFO2;
DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0);
typedef struct ICreateTypeLib2 ICreateTypeLib2,*LPCREATETYPELIB2;
DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0);
typedef struct ITypeChangeEvents ITypeChangeEvents,*LPTYPECHANGEEVENTS;
DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0);
typedef struct ITypeLib2 ITypeLib2,*LPTYPELIB2;
DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2;
DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
0x08,0x00, 0x2B,0x2B,0xD1,0x19);
typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
/*****************************************************************************
* Automation data types
*/
/*
* Data types for Variants.
*/
enum VARENUM {
VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
VT_DISPATCH = 9,
VT_ERROR = 10,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_UNKNOWN = 13,
VT_DECIMAL = 14,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_INT = 22,
VT_UINT = 23,
VT_VOID = 24,
VT_HRESULT = 25,
VT_PTR = 26,
VT_SAFEARRAY = 27,
VT_CARRAY = 28,
VT_USERDEFINED = 29,
VT_LPSTR = 30,
VT_LPWSTR = 31,
VT_FILETIME = 64,
VT_BLOB = 65,
VT_STREAM = 66,
VT_STORAGE = 67,
VT_STREAMED_OBJECT = 68,
VT_STORED_OBJECT = 69,
VT_BLOB_OBJECT = 70,
VT_CF = 71,
VT_CLSID = 72,
VT_VECTOR = 0x1000,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000,
VT_RESERVED = 0x8000,
VT_ILLEGAL = 0xffff,
VT_ILLEGALMASKED = 0xfff,
VT_TYPEMASK = 0xfff
};
/* the largest valide type
*/
#define VT_MAXVALIDTYPE VT_CLSID
/*
* Declarations of the VARIANT structure and the VARIANT APIs.
*/
/* S_OK : Success.
* DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
* DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
* DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
* E_INVALIDARG : One argument is invalid.
* E_OUTOFMEMORY : Memory could not be allocated for the conversion.
* DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
*/
typedef struct tagVARIANT VARIANT;
typedef struct tagVARIANT VARIANTARG;
struct tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
/* By value.
*/
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
INT32 intVal;
UINT32 uintVal;
BYTE bVal;
short iVal;
long lVal;
float fltVal;
double dblVal;
VARIANT_BOOL boolVal;
SCODE scode;
DATE date;
BSTR32 bstrVal;
CY cyVal;
/*
DECIMAL decVal;
IUnknown* punkVal;
IDispatch* pdispVal;
SAFEARRAY* parray;
*/
/* By reference
*/
CHAR* pcVal;
USHORT* puiVal;
ULONG* pulVal;
INT32* pintVal;
UINT32* puintVal;
BYTE* pbVal;
short* piVal;
long* plVal;
float* pfltVal;
double* pdblVal;
VARIANT_BOOL* pboolVal;
SCODE* pscode;
DATE* pdate;
BSTR32* pbstrVal;
VARIANT* pvarVal;
PVOID byref;
CY* pcyVal;
/*
DECIMAL* pdecVal;
IUnknown** ppunkVal;
IDispatch** ppdispVal;
SAFEARRAY** pparray;
*/
} u;
};
typedef LONG DISPID;
typedef struct tagDISPPARAMS
{
VARIANTARG* rgvarg;
DISPID* rgdispidNamedArgs;
UINT32 cArgs;
UINT32 cNamedArgs;
} DISPPARAMS;
typedef struct tagEXCEPINFO {
WORD wCode;
WORD wReserved;
BSTR32 bstrSource;
BSTR32 bstrDescription;
BSTR32 bstrHelpFile;
DWORD dwHelpContext;
PVOID pvReserved;
HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
SCODE scode;
} EXCEPINFO, * LPEXCEPINFO;
/*****************************************************************************
* IDispatch interface
*/
#define ICOM_INTERFACE IDispatch
#define IDispatch_METHODS \
ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT32*, pctinfo); \
ICOM_METHOD3(HRESULT, GetTypeInfo, UINT32, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo); \
ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR32*, rgszNames, UINT32, cNames, LCID, lcid, DISPID*, rgDispId); \
ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT32*, puArgErr);
#define IDispatch_IMETHODS \
ICOM_INHERITS(IDispatch,IUnknown)
ICOM_DEFINE(IDispatch,IUnknown)
#undef ICOM_INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
#define IDispatch_Release(p) ICOM_CALL (Release,p)
/*** IDispatch methods ***/
#define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
#define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,b,c)
#define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
#define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
#endif
#endif /* __WINE_WINE_OBJ_OLEAUT_H */
/*
* Defines the COM interfaces and APIs related to OLE font support.
*
* Depends on 'obj_base.h'.
*/
#ifndef __WINE_WINE_OBJ_OLEFONT_H
#define __WINE_WINE_OBJ_OLEFONT_H
#include "windows.h"
#include "wintypes.h"
/*****************************************************************************
* Predeclare the interfaces
*/
DEFINE_GUID(IID_IFont, 0xBEF6E002, 0xA874, 0x101A, 0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB);
typedef struct IFont IFont,*LPFONT;
DEFINE_GUID(IID_IFontDisp, 0xBEF6E003, 0xA874, 0x101A, 0x8B, 0xBA, 0x00, 0xAA, 0x00, 0x30, 0x0C, 0xAB);
typedef struct IFontDisp IFontDisp,*LPFONTDISP;
typedef TEXTMETRIC32W TEXTMETRICOLE;
/*****************************************************************************
* IFont interface
*/
#define ICOM_INTERFACE IFont
#define IFont_METHODS \
ICOM_METHOD1(HRESULT, get_Name, BSTR32*, pname); \
ICOM_METHOD1(HRESULT, put_Name, BSTR32, name); \
ICOM_METHOD1(HRESULT, get_Size, CY*, psize); \
ICOM_METHOD1(HRESULT, put_Size, CY, size); \
ICOM_METHOD1(HRESULT, get_Bold, BOOL32*, pbold); \
ICOM_METHOD1(HRESULT, put_Bold, BOOL32, bold); \
ICOM_METHOD1(HRESULT, get_Italic, BOOL32*, pitalic); \
ICOM_METHOD1(HRESULT, put_Italic, BOOL32, italic); \
ICOM_METHOD1(HRESULT, get_Underline, BOOL32*, punderline); \
ICOM_METHOD1(HRESULT, put_Underline, BOOL32, underline); \
ICOM_METHOD1(HRESULT, get_Strikethrough, BOOL32*, pstrikethrough); \
ICOM_METHOD1(HRESULT, put_Strikethrough, BOOL32, strikethrough); \
ICOM_METHOD1(HRESULT, get_Weight, short*, pweight); \
ICOM_METHOD1(HRESULT, put_Weight, short, weight); \
ICOM_METHOD1(HRESULT, get_Charset, short*, pcharset); \
ICOM_METHOD1(HRESULT, put_Charset, short, charset); \
ICOM_METHOD1(HRESULT, get_hFont, HFONT32*, phfont); \
ICOM_METHOD1(HRESULT, put_hFont, HFONT32, hfont); \
ICOM_METHOD1(HRESULT, Clone, IFont**, ppfont); \
ICOM_METHOD1(HRESULT, IsEqual, IFont*, pFontOther); \
ICOM_METHOD2(HRESULT, SetRatio, long, cyLogical, long, cyHimetric); \
ICOM_METHOD1(HRESULT, QueryTextMetrics, TEXTMETRICOLE*, ptm); \
ICOM_METHOD1(HRESULT, AddRefHfont, HFONT32, hfont); \
ICOM_METHOD1(HRESULT, ReleaseHfont, HFONT32, hfont); \
ICOM_METHOD1(HRESULT, SetHdc, HDC32, hdc);
#define IFont_IMETHODS \
ICOM_INHERITS(IFont,IUnknown)
ICOM_DEFINE(IFont,IUnknown)
#undef ICOM_INTERFACE
#ifdef ICOM_CINTERFACE
/*** IUnknown methods ***/
#define IFont_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define IFont_AddRef(p) ICOM_CALL (AddRef,p)
#define IFont_Release(p) ICOM_CALL (Release,p)
/*** IFont methods ***/
#define IFont_getName(p,a) ICOM_CALL1(get_Name,p,a)
#define IFont_putName(p,a) ICOM_CALL1(put_Name,p,a)
#define IFont_get_Size(p,a) ICOM_CALL1(get_Size,p,a)
#define IFont_put_Size(p,a) ICOM_CALL1(put_Size,p,a)
#define IFont_get_Bold(p,a) ICOM_CALL1(get_Bold,a)
#define IFont_put_Bold(p,a) ICOM_CALL1(put_Bold,a)
#define IFont_get_Italic(p,a) ICOM_CALL1(get_Italic,a)
#define IFont_put_Italic(p,a) ICOM_CALL1(put_Italic,a)
#define IFont_get_Underline(p,a) ICOM_CALL1(get_Underline,a)
#define IFont_put_Underline(p,a) ICOM_CALL1(put_Underline,a)
#define IFont_get_Strikethrough(p,a) ICOM_CALL1(get_Strikethrough,a)
#define IFont_put_Strikethrough(p,a) ICOM_CALL1(put_Strikethrough,a)
#define IFont_get_Weight(p,a) ICOM_CALL1(get_Weight,a)
#define IFont_put_Weight(p,a) ICOM_CALL1(put_Weight,a)
#define IFont_get_Charset(p,a) ICOM_CALL1(get_Charset,a)
#define IFont_put_Charset(p,a) ICOM_CALL1(put_Charset,a)
#define IFont_get_hFont(p,a) ICOM_CALL1(get_hFont,a)
#define IFont_put_hFont(p,a) ICOM_CALL1(put_hFont,a)
#define IFont_Clone(p,a) ICOM_CALL1(Clone,a)
#define IFont_IsEqual(p,a) ICOM_CALL1(IsEqual,a)
#define IFont_SetRatio(p,a,b) ICOM_CALL2(SetRatio,a,b)
#define IFont_QueryTextMetrics(p,a) ICOM_CALL1(QueryTextMetrics,a)
#define IFont_AddRefHfont(p,a) ICOM_CALL1(AddRefHfont,a)
#define IFont_ReleaseHfont(p,a) ICOM_CALL1(ReleaseHfont,a)
#define IFont_SetHdc(p,a) ICOM_CALL1(SetHdc,a)
#endif
#endif /* __WINE_WINE_OBJ_OLEFONT_H */
......@@ -199,6 +199,7 @@ typedef struct _ACL {
WORD Sbz2;
} ACL, *PACL;
typedef DWORD SECURITY_INFORMATION;
typedef WORD SECURITY_DESCRIPTOR_CONTROL;
/* The security descriptor structure */
......
......@@ -18,6 +18,7 @@ C_SRCS = \
ole2nls.c \
olecli.c \
oledlg.c \
olefont.c \
oleobj.c \
olesvr.c \
parsedt.c \
......
......@@ -8,6 +8,9 @@
* don't even all belong to the same DLL !!!
*/
#include "oleobj.h"
#include "oleidl.h"
#include "oaidl.h"
#include "ocidl.h"
#include "objbase.h"
#include "servprov.h"
#include "ddraw.h"
......
......@@ -6,6 +6,7 @@
#include <string.h>
#include "windows.h"
#include "winerror.h"
#include "ole.h"
#include "ole2.h"
#include "oleauto.h"
......@@ -278,6 +279,19 @@ int WINAPI SysStringLen32(BSTR32 str)
}
/******************************************************************************
* SysStringByteLen [OLEAUT32.149]
*
* The Windows documentation states that the length returned by this function
* is not necessarely the same as the length returned by the _lstrlenW method.
* It is the same number that was passed in as the "len" parameter if the
* string was allocated with a SysAllocStringLen method call.
*/
int WINAPI SysStringByteLen(BSTR32 str)
{
return SysStringLen32(str)*sizeof(WCHAR);
}
/******************************************************************************
* CreateDispTypeInfo [OLE2DISP.31]
*/
OLESTATUS WINAPI CreateDispTypeInfo(
......@@ -300,3 +314,22 @@ OLESTATUS WINAPI RegisterActiveObject(
FIXME(ole,"(%p,%s,0x%08lx,%p):stub\n",punk,buf,dwFlags,pdwRegister);
return 0;
}
/******************************************************************************
* OleTranslateColor [OLEAUT32.421]
*/
INT32 WINAPI OleTranslateColor(
LONG clr,
HPALETTE32 hpal,
COLORREF* pColorRef)
{
FIXME(ole,"():stub\n");
*pColorRef = clr;
return S_OK;
}
This diff is collapsed. Click to expand it.
......@@ -139,6 +139,24 @@ HRESULT WINAPI LoadTypeLib32(
}
/******************************************************************************
* LoadRegTypeLib [OLEAUT32.162]
*/
HRESULT WINAPI LoadRegTypeLib(
REFGUID rguid,
unsigned short wVerMajor,
unsigned short wVerMinor,
LCID lcid,
void** pptLib)
{
FIXME(ole, "(): stub\n");
if (pptLib!=0)
*pptLib=0;
return E_FAIL;
}
/******************************************************************************
* RegisterTypeLib32 [OLEAUT32.163]
* Adds information about a type library to the System Registry
* NOTES
......
......@@ -128,11 +128,11 @@ type win32
146 stub DispCallFunc
147 stdcall VariantChangeTypeEx(ptr ptr) VariantChangeTypeEx32
148 stub SafeArrayPtrOfIndex
149 stub SysStringByteLen
149 stdcall SysStringByteLen(ptr) SysStringByteLen
150 stub SysAllocStringByteLen
160 stub CreateTypeLib
161 stdcall LoadTypeLib (ptr ptr) LoadTypeLib32
162 stub LoadRegTypeLib
162 stdcall LoadRegTypeLib (ptr long long long ptr) LoadRegTypeLib
163 stdcall RegisterTypeLib(ptr str str) RegisterTypeLib32
164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr) QueryPathOfRegTypeLib32
165 stub LHashValOfNameSys
......@@ -285,8 +285,8 @@ type win32
417 stub OleCreatePropertyFrame
418 stub OleLoadPicture
419 stub OleCreatePictureIndirect
420 stub OleCreateFontIndirect
421 stub OleTranslateColor
420 stdcall OleCreateFontIndirect(ptr ptr ptr) OleCreateFontIndirect
421 stdcall OleTranslateColor(long long long) OleTranslateColor
422 stub OleLoadPictureFile
423 stub OleSavePictureFile
424 stub OleLoadPicturePath
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment