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

From: Eli Zaretskii <[email-masked]>
Date: Sat, 01 Oct 2011 14:06:25 +0300

> Date: Sun, 12 Jun 2011 23:47:33 +0200
> From: oslsachem <[email-masked]>
> Cc: [email-masked]
> 
> So the change correctly done (supposing the is_windows_9x() function
> was available for this file) could be something like :
> 
> void
> globals_of_w32menu ()
> {
>   /* See if Get/SetMenuItemInfo functions are available.  */
>   HMODULE user32 = GetModuleHandle ("user32.dll");
>   get_menu_item_info = (GetMenuItemInfoA_Proc) GetProcAddress (user32,
> "GetMenuItemInfoA");
>   set_menu_item_info = (SetMenuItemInfoA_Proc) GetProcAddress (user32,
> "SetMenuItemInfoA");
>   if (is_windows_9x())
>     {
>       HMODULE unicows = GetModuleHandle ("unicows.dll");
>       unicode_append_menu = (AppendMenuW_Proc) GetProcAddress
> (unicows, "AppendMenuW");
>     }
>   else unicode_append_menu = (AppendMenuW_Proc) GetProcAddress
> (user32, "AppendMenuW");
> }
> 
> I think it would be interesting to make this change given that this
> unicode function is already called through function pointers and that
> this would keep the execution branches of windows 9x and windows NT as
> close as possible.

I would like to avoid making changes for which we don't have a good
reason and a clear test case.  So if you can spot any significant
differences in menus depending on whether AppendMenuW comes from
unicows.dll or elsewhere, please show them, and let's take it from
there.  If there are no significant differences, I'd prefer not to
rock the boat more than necessary.

Thanks.