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;
}
/*
* OLE Font encapsulation implementation
*
* This file contains an implementation of the IFont
* interface and the OleCreateFontIndirect API call.
*
* Copyright 1999 Francis Beaudet
*/
#include <assert.h>
#include "windows.h"
#include "winerror.h"
#include "ocidl.h"
#include "oleauto.h"
#include "olectl.h"
#include "debug.h"
/***********************************************************************
* Declaration of the implemetation class for the IFont interface
*/
typedef struct OLEFontImpl OLEFontImpl;
struct OLEFontImpl
{
/*
* This class supports many interfaces. IUnknown, IFont,
* IDispatch and IDispFont. The first two are supported by
* the first vtablem the other two are supported by the second
* table.
*/
ICOM_VTABLE(IFont)* lpvtbl1;
ICOM_VTABLE(IDispatch)* lpvtbl2;
/*
* Reference count for that instance of the class.
*/
ULONG ref;
/*
* This structure contains the description of the class.
*/
FONTDESC description;
};
/*
* Here, I define utility macros to help with the casting of the
* "this" parameter.
* There is a version to accomodate the first vtable and a version to
* accomodate the second one.
*/
#define _ICOM_THIS(class,name) class* this = (class*)name;
#define _ICOM_THIS_From_IDispatch(class, name) class* this = (class*)(((void*)name)-sizeof(void*));
/***********************************************************************
* Prototypes for the implementation functions for the IFont
* interface
*/
static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc);
static void OLEFontImpl_Destroy(OLEFontImpl* fontDesc);
static HRESULT OLEFontImpl_QueryInterface(IFont* iface, REFIID riid, VOID** ppvoid);
static ULONG OLEFontImpl_AddRef(IFont* iface);
static ULONG OLEFontImpl_Release(IFont* iface);
static HRESULT OLEFontImpl_get_Name(IFont* iface, BSTR32* pname);
static HRESULT OLEFontImpl_put_Name(IFont* iface, BSTR32 name);
static HRESULT OLEFontImpl_get_Size(IFont* iface, CY* psize);
static HRESULT OLEFontImpl_put_Size(IFont* iface, CY size);
static HRESULT OLEFontImpl_get_Bold(IFont* iface, BOOL32* pbold);
static HRESULT OLEFontImpl_put_Bold(IFont* iface, BOOL32 bold);
static HRESULT OLEFontImpl_get_Italic(IFont* iface, BOOL32* pitalic);
static HRESULT OLEFontImpl_put_Italic(IFont* iface, BOOL32 italic);
static HRESULT OLEFontImpl_get_Underline(IFont* iface, BOOL32* punderline);
static HRESULT OLEFontImpl_put_Underline(IFont* iface, BOOL32 underline);
static HRESULT OLEFontImpl_get_Strikethrough(IFont* iface, BOOL32* pstrikethrough);
static HRESULT OLEFontImpl_put_Strikethrough(IFont* iface, BOOL32 strikethrough);
static HRESULT OLEFontImpl_get_Weight(IFont* iface, short* pweight);
static HRESULT OLEFontImpl_put_Weight(IFont* iface, short weight);
static HRESULT OLEFontImpl_get_Charset(IFont* iface, short* pcharset);
static HRESULT OLEFontImpl_put_Charset(IFont* iface, short charset);
static HRESULT OLEFontImpl_get_hFont(IFont* iface, HFONT32* phfont);
static HRESULT OLEFontImpl_put_hFont(IFont* iface, HFONT32 hfont);
static HRESULT OLEFontImpl_Clone(IFont* iface, IFont** ppfont);
static HRESULT OLEFontImpl_IsEqual(IFont* iface, IFont* pFontOther);
static HRESULT OLEFontImpl_SetRatio(IFont* iface, long cyLogical, long cyHimetric);
static HRESULT OLEFontImpl_QueryTextMetrics(IFont* iface, TEXTMETRICOLE* ptm);
static HRESULT OLEFontImpl_AddRefHfont(IFont* iface, HFONT32 hfont);
static HRESULT OLEFontImpl_ReleaseHfont(IFont* iface, HFONT32 hfont);
static HRESULT OLEFontImpl_SetHdc(IFont* iface, HDC32 hdc);
/***********************************************************************
* Prototypes for the implementation functions for the IDispatch
* interface
*/
static HRESULT OLEFontImpl_IDispatch_QueryInterface(IDispatch* iface,
REFIID riid,
VOID** ppvoid);
static ULONG OLEFontImpl_IDispatch_AddRef(IDispatch* iface);
static ULONG OLEFontImpl_IDispatch_Release(IDispatch* iface);
static HRESULT OLEFontImpl_GetTypeInfoCount(IDispatch* iface,
unsigned int* pctinfo);
static HRESULT OLEFontImpl_GetTypeInfo(IDispatch* iface,
UINT32 iTInfo,
LCID lcid,
ITypeInfo** ppTInfo);
static HRESULT OLEFontImpl_GetIDsOfNames(IDispatch* iface,
REFIID riid,
LPOLESTR32* rgszNames,
UINT32 cNames,
LCID lcid,
DISPID* rgDispId);
static HRESULT OLEFontImpl_Invoke(IDispatch* iface,
DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO* pExepInfo,
UINT32* puArgErr);
/*
* Virtual function tables for the OLEFontImpl class.
*/
static ICOM_VTABLE(IFont) OLEFontImpl_VTable =
{
OLEFontImpl_QueryInterface,
OLEFontImpl_AddRef,
OLEFontImpl_Release,
OLEFontImpl_get_Name,
OLEFontImpl_put_Name,
OLEFontImpl_get_Size,
OLEFontImpl_put_Size,
OLEFontImpl_get_Bold,
OLEFontImpl_put_Bold,
OLEFontImpl_get_Italic,
OLEFontImpl_put_Italic,
OLEFontImpl_get_Underline,
OLEFontImpl_put_Underline,
OLEFontImpl_get_Strikethrough,
OLEFontImpl_put_Strikethrough,
OLEFontImpl_get_Weight,
OLEFontImpl_put_Weight,
OLEFontImpl_get_Charset,
OLEFontImpl_put_Charset,
OLEFontImpl_get_hFont,
OLEFontImpl_put_hFont,
OLEFontImpl_Clone,
OLEFontImpl_IsEqual,
OLEFontImpl_SetRatio,
OLEFontImpl_QueryTextMetrics,
OLEFontImpl_AddRefHfont,
OLEFontImpl_ReleaseHfont,
OLEFontImpl_SetHdc
};
static ICOM_VTABLE(IDispatch) OLEFontImpl_IDispatch_VTable =
{
OLEFontImpl_IDispatch_QueryInterface,
OLEFontImpl_IDispatch_AddRef,
OLEFontImpl_IDispatch_Release,
OLEFontImpl_GetTypeInfoCount,
OLEFontImpl_GetTypeInfo,
OLEFontImpl_GetIDsOfNames,
OLEFontImpl_Invoke
};
/******************************************************************************
* OleCreateFontIndirect [OLEAUT32.420]
*/
WINOLECTLAPI OleCreateFontIndirect(
LPFONTDESC lpFontDesc,
REFIID riid,
VOID** ppvObj)
{
OLEFontImpl* newFont = 0;
HRESULT hr = S_OK;
/*
* Sanity check
*/
if (ppvObj==0)
return E_POINTER;
*ppvObj = 0;
/*
* Try to construct a new instance of the class.
*/
newFont = OLEFontImpl_Construct(lpFontDesc);
if (newFont == 0)
return E_OUTOFMEMORY;
/*
* Make sure it supports the interface required by the caller.
*/
hr = IFont_QueryInterface((IFont*)newFont, riid, ppvObj);
/*
* Release the reference obtained in the constructor. If
* the QueryInterface was unsuccessful, it will free the class.
*/
IFont_Release((IFont*)newFont);
return hr;
}
/***********************************************************************
* Implementation of the OLEFontImpl class.
*/
/************************************************************************
* OLEFontImpl_Construct
*
* This method will construct a new instance of the OLEFontImpl
* class.
*
* The caller of this method must release the object when it's
* done with it.
*/
static OLEFontImpl* OLEFontImpl_Construct(LPFONTDESC fontDesc)
{
OLEFontImpl* newObject = 0;
/*
* Allocate space for the object.
*/
newObject = HeapAlloc(GetProcessHeap(), 0, sizeof(OLEFontImpl));
if (newObject==0)
return newObject;
/*
* Initialize the virtual function table.
*/
newObject->lpvtbl1 = &OLEFontImpl_VTable;
newObject->lpvtbl2 = &OLEFontImpl_IDispatch_VTable;
/*
* Start with one reference count. The caller of this function
* must release the interface pointer when it is done.
*/
newObject->ref = 1;
/*
* Copy the description of the font in the object.
*/
assert(fontDesc->cbSizeofstruct >= sizeof(FONTDESC));
newObject->description.cbSizeofstruct = sizeof(FONTDESC);
newObject->description.lpstrName = HeapAlloc(GetProcessHeap(),
0,
(lstrlen32W(fontDesc->lpstrName)+1) * sizeof(WCHAR));
lstrcpy32W(newObject->description.lpstrName, fontDesc->lpstrName);
newObject->description.cySize = fontDesc->cySize;
newObject->description.sWeight = fontDesc->sWeight;
newObject->description.sCharset = fontDesc->sCharset;
newObject->description.fItalic = fontDesc->fItalic;
newObject->description.fUnderline = fontDesc->fUnderline;
newObject->description.fStrikeThrough = fontDesc->fStrikeThrough;
return newObject;
}
/************************************************************************
* OLEFontImpl_Construct
*
* This method is called by the Release method when the reference
* count goes doen to 0. it will free all resources used by
* this object.
*/
static void OLEFontImpl_Destroy(OLEFontImpl* fontDesc)
{
if (fontDesc->description.lpstrName!=0)
HeapFree(GetProcessHeap(), 0, fontDesc->description.lpstrName);
HeapFree(GetProcessHeap(), 0, fontDesc);
}
/************************************************************************
* OLEFontImpl_QueryInterface (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
HRESULT WINAPI OLEFontImpl_QueryInterface(
IFont* iface,
REFIID riid,
void** ppvObject)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Perform a sanity check on the parameters.
*/
if ( (this==0) || (ppvObject==0) )
return E_INVALIDARG;
/*
* Initialize the return parameter.
*/
*ppvObject = 0;
/*
* Compare the riid with the interface IDs implemented by this object.
*/
if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0)
{
*ppvObject = (IFont*)this;
}
else if (memcmp(&IID_IFont, riid, sizeof(IID_IFont)) == 0)
{
*ppvObject = (IFont*)this;
}
else if (memcmp(&IID_IDispatch, riid, sizeof(IID_IDispatch)) == 0)
{
*ppvObject = (IDispatch*)&(this->lpvtbl2);
}
else if (memcmp(&IID_IFontDisp, riid, sizeof(IID_IFontDisp)) == 0)
{
*ppvObject = (IDispatch*)&(this->lpvtbl2);
}
/*
* Check that we obtained an interface.
*/
if ((*ppvObject)==0)
return E_NOINTERFACE;
/*
* Query Interface always increases the reference count by one when it is
* successful
*/
OLEFontImpl_AddRef((IFont*)this);
return S_OK;;
}
/************************************************************************
* OLEFontImpl_AddRef (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
ULONG WINAPI OLEFontImpl_AddRef(
IFont* iface)
{
_ICOM_THIS(OLEFontImpl, iface);
this->ref++;
return this->ref;
}
/************************************************************************
* OLEFontImpl_Release (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
ULONG WINAPI OLEFontImpl_Release(
IFont* iface)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Decrease the reference count on this object.
*/
this->ref--;
/*
* If the reference count goes down to 0, perform suicide.
*/
if (this->ref==0)
{
OLEFontImpl_Destroy(this);
return 0;
}
return this->ref;
}
/************************************************************************
* OLEFontImpl_get_Name (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Name(
IFont* iface,
BSTR32* pname)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check.
*/
if (pname==0)
return E_POINTER;
if (this->description.lpstrName!=0)
*pname = SysAllocString32(this->description.lpstrName);
else
*pname = 0;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Name (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Name(
IFont* iface,
BSTR32 name)
{
_ICOM_THIS(OLEFontImpl, iface);
if (this->description.lpstrName==0)
{
this->description.lpstrName = HeapAlloc(GetProcessHeap(),
0,
(lstrlen32W(name)+1) * sizeof(WCHAR));
}
else
{
this->description.lpstrName = HeapReAlloc(GetProcessHeap(),
0,
this->description.lpstrName,
(lstrlen32W(name)+1) * sizeof(WCHAR));
}
if (this->description.lpstrName==0)
return E_OUTOFMEMORY;
lstrcpy32W(this->description.lpstrName, name);
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Size (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Size(
IFont* iface,
CY* psize)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (psize==0)
return E_POINTER;
*psize = this->description.cySize;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Size (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Size(
IFont* iface,
CY size)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.cySize = size;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Bold (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Bold(
IFont* iface,
BOOL32* pbold)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_put_Bold (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Bold(
IFont* iface,
BOOL32 bold)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_get_Italic (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Italic(
IFont* iface,
BOOL32* pitalic)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (pitalic==0)
return E_POINTER;
*pitalic = this->description.fItalic;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Italic (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Italic(
IFont* iface,
BOOL32 italic)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.fItalic = italic;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Underline (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Underline(
IFont* iface,
BOOL32* punderline)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (punderline==0)
return E_POINTER;
*punderline = this->description.fUnderline;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Underline (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Underline(
IFont* iface,
BOOL32 underline)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.fUnderline = underline;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Strikethrough (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Strikethrough(
IFont* iface,
BOOL32* pstrikethrough)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (pstrikethrough==0)
return E_POINTER;
*pstrikethrough = this->description.fStrikeThrough;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Strikethrough (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Strikethrough(
IFont* iface,
BOOL32 strikethrough)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.fStrikeThrough = strikethrough;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Weight (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Weight(
IFont* iface,
short* pweight)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (pweight==0)
return E_POINTER;
*pweight = this->description.sWeight;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Weight (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Weight(
IFont* iface,
short weight)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.sWeight = weight;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_Charset (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_Charset(
IFont* iface,
short* pcharset)
{
_ICOM_THIS(OLEFontImpl, iface);
/*
* Sanity check
*/
if (pcharset==0)
return E_POINTER;
*pcharset = this->description.sCharset;
return S_OK;
}
/************************************************************************
* OLEFontImpl_put_Charset (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_Charset(
IFont* iface,
short charset)
{
_ICOM_THIS(OLEFontImpl, iface);
this->description.sCharset = charset;
return S_OK;
}
/************************************************************************
* OLEFontImpl_get_hFont (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_get_hFont(
IFont* iface,
HFONT32* phfont)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_put_hFont (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_put_hFont(
IFont* iface,
HFONT32 hfont)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_Clone (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_Clone(
IFont* iface,
IFont** ppfont)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_IsEqual (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_IsEqual(
IFont* iface,
IFont* pFontOther)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_SetRatio (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_SetRatio(
IFont* iface,
long cyLogical,
long cyHimetric)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_QueryTextMetrics (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_QueryTextMetrics(
IFont* iface,
TEXTMETRICOLE* ptm)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_AddRefHfont (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_AddRefHfont(
IFont* iface,
HFONT32 hfont)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_ReleaseHfont (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_ReleaseHfont(
IFont* iface,
HFONT32 hfont)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_SetHdc (IFont)
*
* See Windows documentation for more details on IFont methods.
*/
static HRESULT OLEFontImpl_SetHdc(
IFont* iface,
HDC32 hdc)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_IDispatch_QueryInterface (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
static HRESULT OLEFontImpl_IDispatch_QueryInterface(
IDispatch* iface,
REFIID riid,
VOID** ppvoid)
{
_ICOM_THIS_From_IDispatch(IFont, iface);
return IFont_QueryInterface(this, riid, ppvoid);
}
/************************************************************************
* OLEFontImpl_IDispatch_Release (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
static ULONG OLEFontImpl_IDispatch_Release(
IDispatch* iface)
{
_ICOM_THIS_From_IDispatch(IFont, iface);
return IFont_Release(this);
}
/************************************************************************
* OLEFontImpl_IDispatch_AddRef (IUnknown)
*
* See Windows documentation for more details on IUnknown methods.
*/
static ULONG OLEFontImpl_IDispatch_AddRef(
IDispatch* iface)
{
_ICOM_THIS_From_IDispatch(IFont, iface);
return IFont_AddRef(this);
}
/************************************************************************
* OLEFontImpl_GetTypeInfoCount (IDispatch)
*
* See Windows documentation for more details on IDispatch methods.
*/
static HRESULT OLEFontImpl_GetTypeInfoCount(
IDispatch* iface,
unsigned int* pctinfo)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_GetTypeInfo (IDispatch)
*
* See Windows documentation for more details on IDispatch methods.
*/
static HRESULT OLEFontImpl_GetTypeInfo(
IDispatch* iface,
UINT32 iTInfo,
LCID lcid,
ITypeInfo** ppTInfo)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_GetIDsOfNames (IDispatch)
*
* See Windows documentation for more details on IDispatch methods.
*/
static HRESULT OLEFontImpl_GetIDsOfNames(
IDispatch* iface,
REFIID riid,
LPOLESTR32* rgszNames,
UINT32 cNames,
LCID lcid,
DISPID* rgDispId)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
/************************************************************************
* OLEFontImpl_Invoke (IDispatch)
*
* See Windows documentation for more details on IDispatch methods.
*/
static HRESULT OLEFontImpl_Invoke(
IDispatch* iface,
DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO* pExepInfo,
UINT32* puArgErr)
{
FIXME(ole,"():Stub\n");
return E_NOTIMPL;
}
......@@ -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