"Nikolay Sivov" <bunglehead(a)gmail.com> wrote:
> +/***********************************************************************
> + * CreateFontIndirectExA (GDI32.@)
> + */
> +HFONT WINAPI CreateFontIndirectExA( const ENUMLOGFONTEXDVA *plf )
> +{
> + if(!plf) return NULL;
> +
> + return CreateFontIndirectA(&(plf->elfEnumLogfontEx.elfLogFont));
> +}
> +
> +/***********************************************************************
> + * CreateFontIndirectExW (GDI32.@)
> + */
> +HFONT WINAPI CreateFontIndirectExW( const ENUMLOGFONTEXDVW *plf )
> +{
> + if(!plf) return NULL;
> +
> + return CreateFontIndirectW(&(plf->elfEnumLogfontEx.elfLogFont));
Why did you add the if(!plf) check?
> +static HFONT create_font_ex(const char* test, const ENUMLOGFONTEXDV* lfex)
> +{
> + HFONT hfont = CreateFontIndirectExA(lfex);
> + ok(hfont != 0, "CreateFontIndirectEx failed\n");
> + if (hfont)
> + check_font(test, &(lfex->elfEnumLogfontEx.elfLogFont), hfont);
> + return hfont;
> +}
You need to load CreateFontIndirectExA dynamically, otherwise the test won't
run under NT4/Win9x.
> static void test_logfont(void)
> {
> LOGFONTA lf;
> + ENUMLOGFONTEXDVA lfex;
> HFONT hfont;
>
> memset(&lf, 0, sizeof lf);
> @@ -137,6 +147,10 @@ static void test_logfont(void)
> hfont = create_font("Arial", &lf);
> DeleteObject(hfont);
>
> + lstrcpyA(lfex.elfEnumLogfontEx.elfLogFont.lfFaceName, "Arial");
> + hfont = create_font_ex("Arial", &lfex);
> + DeleteObject(hfont);
All the code in test_logfont() fully initializes the LOGFONT before passing
it to an API, the test above doesn't, is there any reason for that?
--
Dmitry.