43 DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
45 static WCHAR MSSansSerif_font[] = {
'M',
'S',
' ',
'S',
'a',
'n',
's',
' ',
'S',
'e',
'r',
'i',
'f',0};
54 #define EXPECT_HR(hr,hr_exp) \ 55 ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp) 85 ok(
hres ==
S_OK,
"%s: OCFI returns 0x%08x instead of S_OK.\n",
90 hres = IFont_SetRatio(ifnt, ratio_logical, ratio_himetric);
92 "%s: IFont_SetRatio unexpectedly returned 0x%08x.\n",
test_name,
hres);
96 ok(
hres ==
S_OK,
"%s: IFont_get_size returns 0x%08x instead of S_OK.\n",
101 "%s: IFont_get_Size: Lo=%d, Hi=%d; expected Lo=%d, Hi=%d.\n",
106 ok(
hres ==
S_OK,
"%s: IFont_get_hFont returns 0x%08x instead of S_OK.\n",
109 ok(rtnval > 0,
"GetObject(hfont) failed\n");
113 "%s: hFont has lf.lfHeight=%d, expected %d.\n",
137 }
else if(
dpi == 120)
142 skip(
"Skipping resolution dependent font size tests - display resolution is %d\n",
dpi);
200 ok(
font !=
NULL,
"OCFI (NULL,..) returns NULL, instead of !NULL\n");
210 "IFont_QI expected ref value 3 but instead got %d\n",
ref);
213 ok(pvObj !=
NULL,
"IFont_QI does return NULL, instead of a ptr\n");
225 WCHAR name_Name[] = {
'N',
'a',
'm',
'e',0};
236 hres = IFontDisp_GetTypeInfo(fontdisp, 0, en_us, &pTInfo);
238 ok(pTInfo !=
NULL,
"GTI returned NULL.\n");
241 ok(
hres ==
S_OK,
"GetNames returned 0x%08x instead of S_OK.\n",
hres);
242 ok(
n == 1,
"GetNames returned %d names instead of 1.\n",
n);
243 ok(!
lstrcmpiW(
names[0],name_Name),
"DISPID_FONT_NAME doesn't get 'Names'.\n");
246 ITypeInfo_Release(pTInfo);
248 dispparams.cNamedArgs = 0;
249 dispparams.rgdispidNamedArgs =
NULL;
250 dispparams.cArgs = 0;
251 dispparams.rgvarg =
NULL;
256 ok(
hres ==
S_OK,
"IFontDisp_Invoke return 0x%08x instead of S_OK.\n",
hres);
259 IFontDisp_Release(fontdisp);
266 IFontEventsDisp_AddRef(iface);
291 ok(0,
"unexpected call\n");
297 ok(0,
"unexpected call\n");
304 ok(0,
"unexpected call\n");
326 ok(
wFlags == INVOKE_FUNC,
"expected INVOKE_FUNC instead of 0x%x\n",
wFlags);
327 ok(pDispParams->cArgs == 1,
"expected arg count 1, got %d\n", pDispParams->cArgs);
356 static const WCHAR nameW[] = {
'N',
'a',
'm',
'e',0};
357 static const WCHAR sizeW[] = {
'S',
'i',
'z',
'e',0};
358 static const WCHAR boldW[] = {
'B',
'o',
'l',
'd',0};
359 static const WCHAR italicW[] = {
'I',
't',
'a',
'l',
'i',
'c',0};
360 static const WCHAR underlineW[] = {
'U',
'n',
'd',
'e',
'r',
'l',
'i',
'n',
'e',0};
361 static const WCHAR strikeW[] = {
'S',
't',
'r',
'i',
'k',
'e',
't',
'h',
'r',
'o',
'u',
'g',
'h',0};
362 static const WCHAR weightW[] = {
'W',
'e',
'i',
'g',
'h',
't',0};
363 static const WCHAR charsetW[] = {
'C',
'h',
'a',
'r',
's',
'e',
't',0};
398 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&pFont);
406 IConnectionPointContainer_Release(pCPC);
410 IConnectionPoint_Release(pCP);
414 hr = IFont_put_Bold(pFont,
TRUE);
425 switch (font_dispids[
i].
dispid)
429 static const WCHAR arialW[] = {
'A',
'r',
'i',
'a',
'l',0};
436 S(
V_CY(&vararg)).Lo = 25;
437 S(
V_CY(&vararg)).Hi = 0;
441 V_BOOL(&vararg) = VARIANT_FALSE;
447 V_BOOL(&vararg) = VARIANT_TRUE;
461 dispparams.cNamedArgs = 0;
462 dispparams.rgdispidNamedArgs =
NULL;
463 dispparams.cArgs = 1;
464 dispparams.rgvarg = &vararg;
479 IFontDisp_Release(pFontDisp);
481 hr = IFont_Clone(pFont, &pFont2);
483 IFont_Release(pFont);
487 hr = IFont_put_Bold(pFont2,
FALSE);
491 IFont_Release(pFont2);
495 WCHAR* w_name_2,
const char* a_name_2,
497 HRESULT hres_expect,
int numnames)
502 DISPID rgDispId[2] = {0xdeadbeef, 0xdeadbeef};
513 "GetIDsOfNames: \"%s\", \"%s\" returns 0x%08x, expected 0x%08x.\n",
514 a_name_1, a_name_2,
hres, hres_expect);
517 ok(rgDispId[0]==id_1,
518 "GetIDsOfNames: \"%s\" gets DISPID 0x%08x, expected 0x%08x.\n",
519 a_name_1, rgDispId[0], id_1);
524 ok(rgDispId[1]==id_2,
525 "GetIDsOfNames: ..., \"%s\" gets DISPID 0x%08x, expected 0x%08x.\n",
526 a_name_2, rgDispId[1], id_2);
529 IFontDisp_Release(fontdisp);
534 WCHAR name_Name[] = {
'N',
'a',
'm',
'e',0};
535 WCHAR name_Italic[] = {
'I',
't',
'a',
'l',
'i',
'c',0};
536 WCHAR name_Size[] = {
'S',
'i',
'z',
'e',0};
537 WCHAR name_Bold[] = {
'B',
'o',
'l',
'd',0};
538 WCHAR name_Underline[] = {
'U',
'n',
'd',
'e',
'r',
'l',
'i',
'n',
'e',0};
539 WCHAR name_Strikethrough[] = {
'S',
't',
'r',
'i',
'k',
'e',
't',
'h',
'r',
'o',
'u',
'g',
'h',0};
540 WCHAR name_Weight[] = {
'W',
'e',
'i',
'g',
'h',
't',0};
541 WCHAR name_Charset[] = {
'C',
'h',
'a',
'r',
's',
'e',
't',0};
542 WCHAR name_Foo[] = {
'F',
'o',
'o',0};
543 WCHAR name_nAmE[] = {
'n',
'A',
'm',
'E',0};
544 WCHAR name_Nom[] = {
'N',
'o',
'm',0};
615 V_BOOL(&vararg) = VARIANT_FALSE;
616 dispparams.cNamedArgs = 0;
617 dispparams.rgdispidNamedArgs =
NULL;
618 dispparams.cArgs = 1;
619 dispparams.rgvarg = &vararg;
623 dispparams.cArgs = 0;
624 dispparams.rgvarg =
NULL;
643 dispparams.cArgs = 1;
644 dispparams.rgvarg = &vararg;
648 IFontDisp_Release(fontdisp);
661 S(
fd.cySize).Lo = 100;
662 S(
fd.cySize).Hi = 100;
670 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt);
673 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
674 hres = IFont_IsEqual(ifnt,ifnt2);
676 "IFont_IsEqual: (EQUAL) Expected S_OK but got 0x%08x\n",
hres);
677 IFont_Release(ifnt2);
682 "IFont_IsEqual: (NULL) Expected 0x80004003 but got 0x%08x\n",
hres);
686 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
687 hres = IFont_IsEqual(ifnt,ifnt2);
689 "IFont_IsEqual: (strName) Expected S_FALSE but got 0x%08x\n",
hres);
691 IFont_Release(ifnt2);
694 S(
fd.cySize).Lo = 10000;
695 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
696 hres = IFont_IsEqual(ifnt,ifnt2);
698 "IFont_IsEqual: (Lo font size) Expected S_FALSE but got 0x%08x\n",
hres);
699 S(
fd.cySize).Lo = 100;
700 IFont_Release(ifnt2);
703 S(
fd.cySize).Hi = 10000;
704 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
705 hres = IFont_IsEqual(ifnt,ifnt2);
707 "IFont_IsEqual: (Hi font size) Expected S_FALSE but got 0x%08x\n",
hres);
708 S(
fd.cySize).Hi = 100;
709 IFont_Release(ifnt2);
713 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
714 hres = IFont_IsEqual(ifnt,ifnt2);
716 "IFont_IsEqual: (Weight) Expected S_FALSE but got 0x%08x\n",
hres);
718 IFont_Release(ifnt2);
722 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
723 hres = IFont_IsEqual(ifnt,ifnt2);
725 "IFont_IsEqual: (Charset) Expected S_FALSE but got 0x%08x\n",
hres);
727 IFont_Release(ifnt2);
731 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
732 hres = IFont_IsEqual(ifnt,ifnt2);
734 "IFont_IsEqual: (Italic) Expected S_FALSE but got 0x%08x\n",
hres);
736 IFont_Release(ifnt2);
740 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
741 hres = IFont_IsEqual(ifnt,ifnt2);
743 "IFont_IsEqual: (Underline) Expected S_FALSE but got 0x%08x\n",
hres);
745 IFont_Release(ifnt2);
749 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
750 hres = IFont_IsEqual(ifnt,ifnt2);
752 "IFont_IsEqual: (Strikethrough) Expected S_FALSE but got 0x%08x\n",
hres);
754 IFont_Release(ifnt2);
774 S(
fd.cySize).Lo = 100;
775 S(
fd.cySize).Hi = 100;
785 IFont_get_hFont(ifnt1,&hfnt1);
789 IFont_get_hFont(ifnt2,&hfnt2);
792 hres = IFont_ReleaseHfont(ifnt1,
NULL);
794 "IFont_ReleaseHfont: (Bad HFONT) Expected E_INVALIDARG but got 0x%08x\n",
798 hres = IFont_ReleaseHfont(ifnt1,(
HFONT)32);
800 "IFont_ReleaseHfont: (Bad HFONT) Expected S_FALSE but got 0x%08x\n",
804 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
806 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
809 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
811 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
815 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
817 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08x\n",
821 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
823 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08x\n",
826 IFont_Release(ifnt1);
827 IFont_Release(ifnt2);
844 S(
fd.cySize).Lo = 100;
845 S(
fd.cySize).Hi = 100;
853 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt1);
854 IFont_get_hFont(ifnt1,&hfnt1);
856 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
857 IFont_get_hFont(ifnt2,&hfnt2);
860 hres = IFont_AddRefHfont(ifnt1,
NULL);
862 "IFont_AddRefHfont: (Bad HFONT) Expected E_INVALIDARG but got 0x%08x\n",
866 hres = IFont_AddRefHfont(ifnt1,(
HFONT)32);
868 "IFont_AddRefHfont: (Bad HFONT) Expected S_FALSE but got 0x%08x\n",
872 hres = IFont_AddRefHfont(ifnt1,hfnt1);
874 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08x\n",
878 hres = IFont_AddRefHfont(ifnt2,hfnt1);
880 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08x\n",
884 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
886 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
889 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
891 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
894 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
896 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
900 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
902 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08x\n",
906 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
908 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
912 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
914 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08x\n",
919 IFont_Release(ifnt1);
922 hres = IFont_AddRefHfont(ifnt2,hfnt1);
924 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08x\n",
928 hres = IFont_ReleaseHfont(ifnt2,hfnt1);
931 "IFont_AddRefHfont: (Release ref) Expected S_OK or S_FALSE but got 0x%08x\n",
936 IFont_Release(ifnt2);
940 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt3);
941 IFont_get_hFont(ifnt3,&hfnt3);
944 hres = IFont_AddRefHfont(ifnt3,hfnt1);
946 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08x\n",
950 hres = IFont_ReleaseHfont(ifnt3,hfnt1);
952 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08x\n",
955 IFont_Release(ifnt3);
973 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&pFont);
976 hr = IFont_put_Name(pFont,
NULL);
979 hr = IFont_get_Name(pFont,
NULL);
982 hr = IFont_get_Size(pFont,
NULL);
985 hr = IFont_get_Bold(pFont,
NULL);
988 IFont_Release(pFont);
1018 for(
i = 0;
i < 100;
i++)
1022 size.int64 = (
i + 10) * 20000;
1025 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1032 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1038 ok(obj_type == 0,
"%d: got obj type %d\n",
i, obj_type);
1043 for(
i = 0;
i < 100;
i++)
1045 size.int64 = (
i + 10) * 20000;
1048 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1059 if(
i == 0) first_hfont =
hfont;
1061 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1064 IFont_Release(
font);
1067 ok(obj_type == 0,
"got obj type %d\n", obj_type);
1078 for(
i = 0;
i < 100;
i++)
1082 size.int64 = (
i + 10) * 20000;
1085 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1092 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1104 ok(obj_type == 0,
"%d: got obj type %d\n",
i, obj_type);
1110 for(
i = 0;
i < 100;
i++)
1112 size.int64 = (
i + 10) * 20000;
1115 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1126 if(
i == 0) first_hfont =
hfont;
1128 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1131 IFont_Release(
font);
1134 ok(obj_type == 0,
"got obj type %d\n", obj_type);
1142 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&font2);
1147 hr = IFont_get_hFont(font2, &first_hfont);
1150 ok(
hfont == first_hfont,
"fonts differ\n");
1160 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1162 IFont_Release(
font);
1165 ok(obj_type ==
OBJ_FONT,
"got obj type %d\n", obj_type);
1167 IFont_Release(font2);
1170 ok(obj_type == 0,
"got obj type %d\n", obj_type);
1200 IFont_Release(
font);
1227 IFont_Release(
font);
1248 IFont_Release(
font);
1254 IFont_Release(
font);
1259 IFont_Release(
font);
1264 IFont_Release(
font);
1275 IUnknown_Release(unk);
1276 IUnknown_Release(unk2);
1285 if (!pOleCreateFontIndirect)
1287 win_skip(
"OleCreateFontIndirect not available\n");
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
#define DISPID_FONT_UNDER
#define DISP_E_UNKNOWNNAME
#define MAKELCID(lgid, srtid)
static void test_type_info(void)
#define DISPATCH_PROPERTYGET
_Must_inspect_result_ _Out_ LPSIZE psize
static BSTR fonteventsdisp_invoke_arg0
static HRESULT WINAPI FontEventsDisp_GetIDsOfNames(IFontEventsDisp *iface, REFIID riid, LPOLESTR *names, UINT cNames, LCID lcid, DISPID *dispid)
static WCHAR arial_font[]
HDC WINAPI GetDC(_In_opt_ HWND)
static void test_names_ids(WCHAR *w_name_1, const char *a_name_1, WCHAR *w_name_2, const char *a_name_2, LCID lcid, DISPID id_1, DISPID id_2, HRESULT hres_expect, int numnames)
#define DISPID_FONT_WEIGHT
char * wine_dbgstr_w(const wchar_t *wstr)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
#define DISP_E_MEMBERNOTFOUND
static int fonteventsdisp_invoke_called
const GUID IID_IConnectionPointContainer
const char * wine_dbgstr_guid(const GUID *guid)
static IFontEventsDisp FontEventsDisp
static void test_ifont_size(LONGLONG size, LONG ratio_logical, LONG ratio_himetric, LONG hfont_height, const char *test_name)
void WINAPI VariantInit(VARIANTARG *pVarg)
static void test_ifont_sizes(void)
#define SUBLANG_ENGLISH_US
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
static WCHAR MSSansSerif_font[]
static void test_realization(void)
#define EXPECT_HR(hr, hr_exp)
#define DISPID_FONT_STRIKE
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
static void test_GetIDsOfNames(void)
static const WCHAR strikeW[]
static const WCHAR boldW[]
BSTR WINAPI SysAllocString(LPCOLESTR str)
struct tagFONTDESC FONTDESC
static const WCHAR sizeW[]
#define DISPATCH_PROPERTYPUT
static void test_ReleaseHfont(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv)
static const WCHAR nameW[]
static HRESULT WINAPI FontEventsDisp_QueryInterface(IFontEventsDisp *iface, REFIID riid, void **ppvObject)
static void test_returns(void)
struct tagFONTDESC * LPFONTDESC
static void test_font_events_disp(void)
static IFontEventsDispVtbl FontEventsDisp_Vtbl
static HRESULT WINAPI FontEventsDisp_GetTypeInfo(IFontEventsDisp *iface, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
#define DISP_E_UNKNOWNINTERFACE
static HRESULT WINAPI FontEventsDisp_GetTypeInfoCount(IFontEventsDisp *iface, UINT *pctinfo)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
#define DISP_E_PARAMNOTOPTIONAL
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
REFIID LPVOID * ppvObject
#define DISPID_FONT_ITALIC
static void test_QueryInterface(void)
#define DISPID_FONT_CHARSET
static void test_IsEqual(void)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
_In_ DWORD _Out_ _In_ WORD wFlags
static const char * test_name
struct stdole::EXCEPINFO EXCEPINFO
static void test_AddRefHfont(void)
static VARIANTARG static DISPID
static void test_OleCreateFontIndirect(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static void test_hfont_lifetime(void)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
static void test_Invoke(void)
#define DISP_E_BADPARAMCOUNT
static ULONG WINAPI FontEventsDisp_AddRef(IFontEventsDisp *iface)
#define DISPID_FONT_CHANGED
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static HRESULT WINAPI FontEventsDisp_Invoke(IFontEventsDisp *iface, DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
struct stdole::DISPPARAMS DISPPARAMS
#define CTL_E_INVALIDPROPERTYVALUE
static WCHAR marlett_font[]
const GUID IID_IFontEventsDisp
#define GetProcAddress(x, y)
static ULONG WINAPI FontEventsDisp_Release(IFontEventsDisp *iface)
static WCHAR system_font[]
const GUID IID_IClassFactory
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
#define IsEqualIID(riid1, riid2)
static HRESULT(WINAPI *pOleCreateFontIndirect)(LPFONTDESC
DEFINE_GUID(GUID_NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
GLuint const GLchar * name