Subject: Re: bug#8562: Emacs 23.1 and later don't work in windows 98

From: Eli Zaretskii <[email-masked]>
Date: Wed, 08 Jun 2011 23:36:35 +0300

> Date: Wed, 8 Jun 2011 20:11:37 +0200
> From: oslsachem <[email-masked]>
> Cc: [email-masked]
> 
> In any version of windows, if the window apparently does not have at
> least a certain height and I type c-h c-a, I get the *about GNU Emacs*
> buffer version of text terminal Emacs (i.e. emacs -nw) which does not
> show a logotype:
> 
> http://www.speedyshare.com/files/28873451/EmacsNotHighEnough.png
> 
> On the contrary, if the window has at least a certain height and I
> type c-h c-a, I get the expected *about GNU Emacs* buffer version of
> graphical Emacs which, in this case, shows the black and white,
> coarser logotype:
> 
> http://www.speedyshare.com/files/28873452/EmacsHighEnough.png

Yes, this works as intended, see again the function
use-fancy-splash-screens-p, which tests the frame size against the
size of the image displayed in the fancy splash screen.

> However, I still have one more question left:
> In any version of Emacs for windows, if you start Emacs without the -Q
> option and then type c-h c-a you end up with two differently named and
> sized buffers (*GNU Emacs*, *About GNU Emacs*) which have the same
> contents and so, presumably, the same functionality. Is there a reason
> for this?

The contents are very similar, but not identical.  Feel free to ask
this question on [email-masked], though: perhaps there's a place
for improvement there.

> > Btw, could you please enumerate those functions you replaced?  I'm not
> > sure my notes about that are accurate.
> 
> In the end, only 3 functions seem to need to be imported from
> unicows.dll in windows 98:
> 
> GetOutlineTextMetricsW
> 
> GetTextMetricsW
> 
> GetGlyphOutlineW
> 
> These seem to be the functions signatures ( by consulting MSDN ):
> 
> typedef UINT ( * GetOutlineTextMetricsW_Proc)(
>    HDC hdc,
>    UINT cbData,
>    LPOUTLINETEXTMETRICW lpotmw
> );
> typedef BOOL ( * GetTextMetricsW_Proc)(
>    HDC hdc,
>    LPTEXTMETRICW lptmw
> );
> typedef DWORD ( * GetGlyphOutlineW_Proc)(
>    HDC hdc,
>    UINT uChar,
>    UINT uFormat,
>    LPGLYPHMETRICS lpgm,
>    DWORD cbBuffer,
>    LPVOID lpvBuffer,
>    const MAT2 *lpmat2
> );
> 
> I have changed two parameter types to avoid these compiler warnings:
> 
> warning: passing argument 3 of 'Get_Outline_Text_Metrics_W' from
> incompatible pointer type
> note: expected 'LPOUTLINETEXTMETRIC' but argument is of type 'struct
> OUTLINETEXTMETRICW *'
> 
> warning: passing argument 2 of 'Get_Text_Metrics_W' from incompatible
> pointer type
> note: expected 'LPTEXTMETRIC' but argument is of type 'struct TEXTMETRICW *'

Thanks.