Hi, Henry!
Thanks for your efforts on this. I have copied xemacs-beta on my reply.
On Sun, Mar 29, 2015 at 9:52 PM, Henry S. Thompson <ht(a)inf.ed.ac.uk> wrote:
OK, small progress. Using VS6:
Adding the following to syswindows.h at around line 605, in the
_non_-CYGWIN_HEADERS branch
typedef int WINBOOL;
typedef intptr_t LONG_PTR;
typedef uintptr_t ULONG_PTR;
typedef uintptr_t DWORD_PTR;
/* #define PCIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST *
typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY;* */
typedef LPCITEMIDLIST PCIDLIST_ABSOLUTE;
allows several of the -msw.c files to compile.
More similar work is required, I think.
Oops: the last typedef above is wrong - I read the commented-lines above
that backwards!
Thanks for making sure the native Windows build continues to work.
I appreciate your taking the lead on this, because I haven't made any
substantive progress on this over the weekend.
Here are a few comments:
1. I have checked in the configure changes, so please make your next
patchsets based off of current version control. Please split your
patchset into two patches: one containing the w32api refactoring /
unicode regeneration and a second one containing the 64-bit
(DEVICE_TYPE_) changes.
2. Back when I was looking at updating the unicode definitions, I had
a slightly different regexp in lib-sr/make-mswin-unicode.pl:
my $rettype_re = "(SHSTDAPI_\\(${tok_ch}+${ws_re}\\*?\\)|${tok_ch}" .
"[A-Za-z_0-9 \t\n\r\f]*?${tok_ch})";
I think this regexp is a little more restrictive than the one you
used, but I'm not sure that it makes a difference.
3. Here are my current definitions for the syswindows.h block:
#else /* !CYGWIN_HEADERS */
#define W32API_VER(major,minor) 0
#define W32API_INSTALLED_VER 0
/* Some types that show up in Cygwin headers but not in Visual Studio headers,
and cause problems if we used Cygwin headers to generate
intl-auto-encap-win32.[ch]. */
typedef LPCVOID PCVOID;
typedef int WINBOOL;
typedef intptr_t LONG_PTR;
typedef uintptr_t ULONG_PTR;
typedef uintptr_t DWORD_PTR;
typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE;
typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;
/* Defined in w32api/winuser.h */
#define GCLP_MENUNAME (-8)
#define GCLP_HBRBACKGROUND (-10)
#define GCLP_HCURSOR (-12)
#define GCLP_HICON (-14)
#define GCLP_HMODULE (-16)
#define GCLP_WNDPROC (-24)
#define GCLP_HICONSM (-34)
#define GWLP_USERDATA (-21)
#define GWLP_WNDPROC (-4)
#define GWLP_HINSTANCE (-6)
#define GWLP_HWNDPARENT (-8)
#define GWLP_USERDATA (-21)
#define GWLP_ID (-12)
#define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8
#ifdef _WIN64
#undef DWL_MSGRESULT
#undef DWL_DLGPROC
#undef DWL_USER
#endif
#define DWLP_MSGRESULT 0
#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
#endif /* CYGWIN_HEADERS */
Not all of these definitions are necessary, but I think it's probably
best to include the entire GCLP/GWLP definition block.
Thanks for digging in on this.
-Vin
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta