The disabling of the manifests, is that a compiler option, or something we would have to #ifdef out in the source code? if it is a compiler option, what are the changes required in Makefile.gcc and the MSVC project files to get this automatically right?
I can see the use of the GetWindowLong might be a problem when pointers are larger than longs. I know WinBoard uses this to fetch the start address of standard event-handling routines (e.g. for text edits), and then replace it to point to a preamble, which intercepts some of the characters as additional, non-standard commands, before calling the original window callback. I am not sure if the rest of the handling of the addresses would be OK, I will have to chek that. Isn't SetWindowLong also used in some places to fetch a genuine long? (E.g. like an interrup mask?)
@Dan: The fact that it cannot clear options only breaks a patch that was never intended to be included in this version. It was cherry-picked by mistake from the git repository at hgm.nubati.net, in stead of a buglet fix that was supposed to go in. (I had said to Arun: pick the last commit of that branch, without mentioning the name, and for some reason, when he pulled, the last commit was not included, so he picked the one before...

@Peter: The parser.c is supposed to be in the xboard folder (so that when releasing the version generated while building XBoard on Linux can be included in the release tar ball for Windows users that do not have flex). If MSVC does not look for it there, this would have to be changed in the project file. It was already changed in Makefile.ms.