Damjan Jovanovic wrote:
Firstly, why can't winelibs include <windows.h> and <tchar.h>? Are TCHARs even usable in winelibs?
Because we need to explicitly say whether we're write a function that is ASCII or Unicode. If you use TCHARs, you can define UNICODE, and compile your program as a unicode, or not define it, and compile as ASCII. Wine needs to be both, so what should we define it to?
Secondly, what the whole story with WCHARs? Why do L"Unicode string" type strings work in wine apps but not in winelibs?
Some compilers do not support L"string". Older versions of gcc assume a wide character is 32 bytes, not 16. For compatibility with those older compilers, we are restricted to using array initializers for WCHAR strings.
And NEWDEV.DLL needs GWL_USERDATA, DWL_MSGRESULT and PSH_WIZARD97, all of which are within "#ifndef __WINESRC__" sections. Does wine assume DLLs never do user-interface stuff?
Try GWLP_USERDATA instead of GWL_USERDATA, and PSH_WIZARD97_(NEW/OLD) instead of PSH_WIZARD97. Looks like Microsoft decided to change the value of PSH_WIZARD97, as Wine needs to know both values, there needs to be a way to distinguish between them.
Mike