43DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
45static 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};
230 DISPPARAMS dispparams;
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");
317 DISPPARAMS *pDispParams,
319 EXCEPINFO *pExcepInfo,
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};
385 DISPPARAMS dispparams;
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};
608 DISPPARAMS dispparams;
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");
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
static const WCHAR nameW[]
const GUID IID_IClassFactory
#define GetProcAddress(x, y)
static const WCHAR strikeW[]
static const WCHAR boldW[]
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
static const WCHAR sizeW[]
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(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 DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const char * test_name
static const CLSID CLSID_StdFont
static WCHAR MSSansSerif_font[]
static void test_font_events_disp(void)
static void test_returns(void)
static HRESULT WINAPI FontEventsDisp_GetIDsOfNames(IFontEventsDisp *iface, REFIID riid, LPOLESTR *names, UINT cNames, LCID lcid, DISPID *dispid)
static ULONG WINAPI FontEventsDisp_AddRef(IFontEventsDisp *iface)
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)
static BSTR fonteventsdisp_invoke_arg0
#define EXPECT_HR(hr, hr_exp)
static void test_IsEqual(void)
static HRESULT WINAPI FontEventsDisp_QueryInterface(IFontEventsDisp *iface, REFIID riid, void **ppvObject)
static WCHAR marlett_font[]
static void test_realization(void)
static IFontEventsDisp FontEventsDisp
static ULONG WINAPI FontEventsDisp_Release(IFontEventsDisp *iface)
static void test_hfont_lifetime(void)
static void test_Invoke(void)
static void test_QueryInterface(void)
static void test_type_info(void)
static WCHAR system_font[]
static HRESULT WINAPI FontEventsDisp_GetTypeInfoCount(IFontEventsDisp *iface, UINT *pctinfo)
static IFontEventsDispVtbl FontEventsDisp_Vtbl
static HRESULT WINAPI FontEventsDisp_Invoke(IFontEventsDisp *iface, DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static void test_ifont_sizes(void)
static void test_ifont_size(LONGLONG size, LONG ratio_logical, LONG ratio_himetric, LONG hfont_height, const char *test_name)
static void test_AddRefHfont(void)
static void test_GetIDsOfNames(void)
static void test_OleCreateFontIndirect(void)
static int fonteventsdisp_invoke_called
static WCHAR arial_font[]
static void test_ReleaseHfont(void)
static HRESULT WINAPI FontEventsDisp_GetTypeInfo(IFontEventsDisp *iface, UINT itinfo, LCID lcid, ITypeInfo **pptinfo)
static VARIANTARG static DISPID
#define MAKELCID(lgid, srtid)
_Must_inspect_result_ _Out_ LPSIZE psize
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
struct tagFONTDESC FONTDESC
struct tagFONTDESC * LPFONTDESC
#define DISPID_FONT_STRIKE
#define DISPID_FONT_ITALIC
#define CTL_E_INVALIDPROPERTYVALUE
#define DISPID_FONT_CHARSET
#define DISPID_FONT_WEIGHT
#define DISPID_FONT_CHANGED
#define DISPID_FONT_UNDER
const GUID IID_IConnectionPointContainer
const GUID IID_IFontEventsDisp
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define SUBLANG_ENGLISH_US
static __inline const char * wine_dbgstr_guid(const GUID *id)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define DISP_E_UNKNOWNINTERFACE
#define DISP_E_BADPARAMCOUNT
#define DISP_E_MEMBERNOTFOUND
#define DISP_E_PARAMNOTOPTIONAL
#define DISP_E_UNKNOWNNAME
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetObjectA(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)