One day further, one day wiser...
I learnt how to write tests... Windows XP works exaclty like the original (wine) code, setting last error = ERROR_INVALID_INDEX. Windows 98 however sets it = ERROR_INVALID_PARAMETER (1). So, the "fix" that made civilization work for me is not the right one...
I'll look further into it, it is a learning example for me. It works in windows XP, so as long as it doesn't explicitly test for civ2, it should be possible to get it to work. Mayby I'll have tot test with a native user32.dll, and see some relay/snoop log.
Krist
(1) does this imply that if we're emulating win95/98/Me behaviour, we have to set the last error = ERROR_INVALID_PARAMETER, otherwise to ERROR_INVALID_INDEX?