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 check_interface(a, b, c) check_interface_(__LINE__, a, b, c)
63 hr = IUnknown_QueryInterface(iface, iid, (
void **)&unk);
64 ok_(__FILE__,
line)(
hr == expected_hr,
"Got hr %#lx, expected %#lx.\n",
hr, expected_hr);
66 IUnknown_Release(unk);
69#define EXPECT_HR(hr,hr_exp) \
70 ok(hr == hr_exp, "got 0x%08lx, expected 0x%08lx\n", hr, hr_exp)
100 ok(
hres ==
S_OK,
"%s: OCFI returns 0x%08lx instead of S_OK.\n",
105 hres = IFont_SetRatio(ifnt, ratio_logical, ratio_himetric);
107 "%s: IFont_SetRatio unexpectedly returned 0x%08lx.\n",
test_name,
hres);
111 ok(
hres ==
S_OK,
"%s: IFont_get_size returns 0x%08lx instead of S_OK.\n",
116 "%s: IFont_get_Size: Lo=%ld, Hi=%ld; expected Lo=%ld, Hi=%ld.\n",
121 ok(
hres ==
S_OK,
"%s: IFont_get_hFont returns 0x%08lx instead of S_OK.\n",
124 ok(rtnval > 0,
"GetObject(hfont) failed\n");
128 "%s: hFont has lf.lfHeight=%ld, expected %ld.\n",
152 }
else if(
dpi == 120)
157 skip(
"Skipping resolution dependent font size tests - display resolution is %ld\n",
dpi);
211 ok(
font !=
NULL,
"OCFI (NULL,..) returns NULL, instead of !NULL\n");
231 WCHAR name_Name[] = {
'N',
'a',
'm',
'e',0};
236 DISPPARAMS dispparams;
242 hres = IFontDisp_GetTypeInfo(fontdisp, 0, en_us, &pTInfo);
243 ok(
hres ==
S_OK,
"GTI returned 0x%08lx instead of S_OK.\n",
hres);
244 ok(pTInfo !=
NULL,
"GTI returned NULL.\n");
247 ok(
hres ==
S_OK,
"GetNames returned 0x%08lx instead of S_OK.\n",
hres);
248 ok(
n == 1,
"GetNames returned %d names instead of 1.\n",
n);
249 ok(!
lstrcmpiW(
names[0],name_Name),
"DISPID_FONT_NAME doesn't get 'Names'.\n");
252 ITypeInfo_Release(pTInfo);
254 dispparams.cNamedArgs = 0;
255 dispparams.rgdispidNamedArgs =
NULL;
256 dispparams.cArgs = 0;
257 dispparams.rgvarg =
NULL;
262 ok(
hres ==
S_OK,
"IFontDisp_Invoke return 0x%08lx instead of S_OK.\n",
hres);
265 IFontDisp_Release(fontdisp);
272 IFontEventsDisp_AddRef(iface);
297 ok(0,
"unexpected call\n");
303 ok(0,
"unexpected call\n");
310 ok(0,
"unexpected call\n");
323 DISPPARAMS *pDispParams,
325 EXCEPINFO *pExcepInfo,
332 ok(
wFlags == INVOKE_FUNC,
"expected INVOKE_FUNC instead of 0x%x\n",
wFlags);
333 ok(pDispParams->cArgs == 1,
"expected arg count 1, got %d\n", pDispParams->cArgs);
362 static const WCHAR nameW[] = {
'N',
'a',
'm',
'e',0};
363 static const WCHAR sizeW[] = {
'S',
'i',
'z',
'e',0};
364 static const WCHAR boldW[] = {
'B',
'o',
'l',
'd',0};
365 static const WCHAR italicW[] = {
'I',
't',
'a',
'l',
'i',
'c',0};
366 static const WCHAR underlineW[] = {
'U',
'n',
'd',
'e',
'r',
'l',
'i',
'n',
'e',0};
367 static const WCHAR strikeW[] = {
'S',
't',
'r',
'i',
'k',
'e',
't',
'h',
'r',
'o',
'u',
'g',
'h',0};
368 static const WCHAR weightW[] = {
'W',
'e',
'i',
'g',
'h',
't',0};
369 static const WCHAR charsetW[] = {
'C',
'h',
'a',
'r',
's',
'e',
't',0};
391 DISPPARAMS dispparams;
404 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&pFont);
412 IConnectionPointContainer_Release(pCPC);
416 IConnectionPoint_Release(pCP);
420 hr = IFont_put_Bold(pFont,
TRUE);
431 switch (font_dispids[
i].
dispid)
435 static const WCHAR arialW[] = {
'A',
'r',
'i',
'a',
'l',0};
442 V_CY(&vararg).Lo = 25;
443 V_CY(&vararg).Hi = 0;
447 V_BOOL(&vararg) = VARIANT_FALSE;
453 V_BOOL(&vararg) = VARIANT_TRUE;
467 dispparams.cNamedArgs = 0;
468 dispparams.rgdispidNamedArgs =
NULL;
469 dispparams.cArgs = 1;
470 dispparams.rgvarg = &vararg;
485 IFontDisp_Release(pFontDisp);
487 hr = IFont_Clone(pFont, &pFont2);
489 IFont_Release(pFont);
493 hr = IFont_put_Bold(pFont2,
FALSE);
497 IFont_Release(pFont2);
501 WCHAR* w_name_2,
const char* a_name_2,
503 HRESULT hres_expect,
int numnames)
508 DISPID rgDispId[2] = {0xdeadbeef, 0xdeadbeef};
509 LPOLESTR
names[2] = {w_name_1, w_name_2};
519 "GetIDsOfNames: \"%s\", \"%s\" returns 0x%08lx, expected 0x%08lx.\n",
520 a_name_1, a_name_2,
hres, hres_expect);
523 ok(rgDispId[0]==id_1,
524 "GetIDsOfNames: \"%s\" gets DISPID 0x%08lx, expected 0x%08lx.\n",
525 a_name_1, rgDispId[0], id_1);
530 ok(rgDispId[1]==id_2,
531 "GetIDsOfNames: ..., \"%s\" gets DISPID 0x%08lx, expected 0x%08lx.\n",
532 a_name_2, rgDispId[1], id_2);
535 IFontDisp_Release(fontdisp);
540 WCHAR name_Name[] = {
'N',
'a',
'm',
'e',0};
541 WCHAR name_Italic[] = {
'I',
't',
'a',
'l',
'i',
'c',0};
542 WCHAR name_Size[] = {
'S',
'i',
'z',
'e',0};
543 WCHAR name_Bold[] = {
'B',
'o',
'l',
'd',0};
544 WCHAR name_Underline[] = {
'U',
'n',
'd',
'e',
'r',
'l',
'i',
'n',
'e',0};
545 WCHAR name_Strikethrough[] = {
'S',
't',
'r',
'i',
'k',
'e',
't',
'h',
'r',
'o',
'u',
'g',
'h',0};
546 WCHAR name_Weight[] = {
'W',
'e',
'i',
'g',
'h',
't',0};
547 WCHAR name_Charset[] = {
'C',
'h',
'a',
'r',
's',
'e',
't',0};
548 WCHAR name_Foo[] = {
'F',
'o',
'o',0};
549 WCHAR name_nAmE[] = {
'n',
'A',
'm',
'E',0};
550 WCHAR name_Nom[] = {
'N',
'o',
'm',0};
614 DISPPARAMS dispparams;
621 V_BOOL(&vararg) = VARIANT_FALSE;
622 dispparams.cNamedArgs = 0;
623 dispparams.rgdispidNamedArgs =
NULL;
624 dispparams.cArgs = 1;
625 dispparams.rgvarg = &vararg;
629 dispparams.cArgs = 0;
630 dispparams.rgvarg =
NULL;
649 dispparams.cArgs = 1;
650 dispparams.rgvarg = &vararg;
654 IFontDisp_Release(fontdisp);
676 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt);
679 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
680 hres = IFont_IsEqual(ifnt,ifnt2);
682 "IFont_IsEqual: (EQUAL) Expected S_OK but got 0x%08lx\n",
hres);
683 IFont_Release(ifnt2);
688 "IFont_IsEqual: (NULL) Expected 0x80004003 but got 0x%08lx\n",
hres);
692 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
693 hres = IFont_IsEqual(ifnt,ifnt2);
695 "IFont_IsEqual: (strName) Expected S_FALSE but got 0x%08lx\n",
hres);
697 IFont_Release(ifnt2);
700 fd.cySize.Lo = 10000;
701 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
702 hres = IFont_IsEqual(ifnt,ifnt2);
704 "IFont_IsEqual: (Lo font size) Expected S_FALSE but got 0x%08lx\n",
hres);
706 IFont_Release(ifnt2);
709 fd.cySize.Hi = 10000;
710 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
711 hres = IFont_IsEqual(ifnt,ifnt2);
713 "IFont_IsEqual: (Hi font size) Expected S_FALSE but got 0x%08lx\n",
hres);
715 IFont_Release(ifnt2);
719 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
720 hres = IFont_IsEqual(ifnt,ifnt2);
722 "IFont_IsEqual: (Weight) Expected S_FALSE but got 0x%08lx\n",
hres);
724 IFont_Release(ifnt2);
728 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
729 hres = IFont_IsEqual(ifnt,ifnt2);
731 "IFont_IsEqual: (Charset) Expected S_FALSE but got 0x%08lx\n",
hres);
733 IFont_Release(ifnt2);
737 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
738 hres = IFont_IsEqual(ifnt,ifnt2);
740 "IFont_IsEqual: (Italic) Expected S_FALSE but got 0x%08lx\n",
hres);
742 IFont_Release(ifnt2);
746 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
747 hres = IFont_IsEqual(ifnt,ifnt2);
749 "IFont_IsEqual: (Underline) Expected S_FALSE but got 0x%08lx\n",
hres);
751 IFont_Release(ifnt2);
755 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
756 hres = IFont_IsEqual(ifnt,ifnt2);
758 "IFont_IsEqual: (Strikethrough) Expected S_FALSE but got 0x%08lx\n",
hres);
760 IFont_Release(ifnt2);
791 IFont_get_hFont(ifnt1,&hfnt1);
795 IFont_get_hFont(ifnt2,&hfnt2);
798 hres = IFont_ReleaseHfont(ifnt1,
NULL);
800 "IFont_ReleaseHfont: (Bad HFONT) Expected E_INVALIDARG but got 0x%08lx\n",
804 hres = IFont_ReleaseHfont(ifnt1,(HFONT)32);
806 "IFont_ReleaseHfont: (Bad HFONT) Expected S_FALSE but got 0x%08lx\n",
810 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
812 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
815 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
817 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
821 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
823 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08lx\n",
827 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
829 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08lx\n",
832 IFont_Release(ifnt1);
833 IFont_Release(ifnt2);
859 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt1);
860 IFont_get_hFont(ifnt1,&hfnt1);
862 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt2);
863 IFont_get_hFont(ifnt2,&hfnt2);
866 hres = IFont_AddRefHfont(ifnt1,
NULL);
868 "IFont_AddRefHfont: (Bad HFONT) Expected E_INVALIDARG but got 0x%08lx\n",
872 hres = IFont_AddRefHfont(ifnt1,(HFONT)32);
874 "IFont_AddRefHfont: (Bad HFONT) Expected S_FALSE but got 0x%08lx\n",
878 hres = IFont_AddRefHfont(ifnt1,hfnt1);
880 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08lx\n",
884 hres = IFont_AddRefHfont(ifnt2,hfnt1);
886 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08lx\n",
890 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
892 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
895 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
897 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
900 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
902 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
906 hres = IFont_ReleaseHfont(ifnt1,hfnt1);
908 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08lx\n",
912 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
914 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
918 hres = IFont_ReleaseHfont(ifnt2,hfnt2);
920 "IFont_AddRefHfont: (Release ref) Expected S_FALSE but got 0x%08lx\n",
925 IFont_Release(ifnt1);
928 hres = IFont_AddRefHfont(ifnt2,hfnt1);
930 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08lx\n",
934 hres = IFont_ReleaseHfont(ifnt2,hfnt1);
937 "IFont_AddRefHfont: (Release ref) Expected S_OK or S_FALSE but got 0x%08lx\n",
942 IFont_Release(ifnt2);
946 pOleCreateFontIndirect(&
fd, &
IID_IFont, (
void **)&ifnt3);
947 IFont_get_hFont(ifnt3,&hfnt3);
950 hres = IFont_AddRefHfont(ifnt3,hfnt1);
952 "IFont_AddRefHfont: (Add ref) Expected S_OK but got 0x%08lx\n",
956 hres = IFont_ReleaseHfont(ifnt3,hfnt1);
958 "IFont_AddRefHfont: (Release ref) Expected S_OK but got 0x%08lx\n",
961 IFont_Release(ifnt3);
979 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&pFont);
982 hr = IFont_put_Name(pFont,
NULL);
985 hr = IFont_get_Name(pFont,
NULL);
988 hr = IFont_get_Size(pFont,
NULL);
991 hr = IFont_get_Bold(pFont,
NULL);
994 IFont_Release(pFont);
1024 for(
i = 0;
i < 100;
i++)
1026 HFONT last_hfont =
hfont;
1028 size.int64 = (
i + 10) * 20000;
1031 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1038 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1046 for(
i = 0;
i < 100;
i++)
1048 size.int64 = (
i + 10) * 20000;
1051 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1062 if(
i == 0) first_hfont =
hfont;
1064 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1067 IFont_Release(
font);
1078 for(
i = 0;
i < 100;
i++)
1080 HFONT last_hfont =
hfont;
1082 size.int64 = (
i + 10) * 20000;
1085 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1092 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1107 for(
i = 0;
i < 100;
i++)
1109 size.int64 = (
i + 10) * 20000;
1112 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1123 if(
i == 0) first_hfont =
hfont;
1125 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1128 IFont_Release(
font);
1136 hr = pOleCreateFontIndirect(&fontdesc, &
IID_IFont, (
void **)&font2);
1141 hr = IFont_get_hFont(font2, &first_hfont);
1144 ok(
hfont == first_hfont,
"fonts differ\n");
1154 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1156 IFont_Release(
font);
1159 ok(obj_type ==
OBJ_FONT,
"got obj type %ld\n", obj_type);
1161 IFont_Release(font2);
1191 IFont_Release(
font);
1218 IFont_Release(
font);
1227 WCHAR str_empty[] = {0};
1240 IFont_Release(
font);
1246 IFont_Release(
font);
1251 IFont_Release(
font);
1256 IFont_Release(
font);
1271 ok(
font != 0,
"Got NULL font\n");
1272 IFont_Release(
font);
1283 IUnknown_Release(unk);
1284 IUnknown_Release(unk2);
1293 if (!pOleCreateFontIndirect)
1295 win_skip(
"OleCreateFontIndirect not available\n");
static POBJECT_TYPE GetObjectType(IN PCWSTR TypeName)
static const WCHAR nameW[]
const GUID IID_IClassFactory
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD clscontext, COSERVERINFO *server_info, REFIID riid, void **obj)
#define GetProcAddress(x, y)
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 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 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
static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported)
#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_interfaces(void)
static void test_Invoke(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)
#define check_interface(a, b, c)
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)
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
const GUID IID_IPersistStreamInit
const GUID IID_IPersistStream
const GUID IID_IPersistPropertyBag
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
_Must_inspect_result_ _Out_ LPSIZE psize
#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)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
#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)