Ladislav Sladecek lsla@post.cz writes:
Maybe the printer driver never gets initialised? (Just a stupid speculation).
Not stupid at all, actually the 16-bit driver support is temporarily broken (not that it really worked well before anyway). It shouldn't be too hard to fix, but I haven't had time yet. Volunteers are welcome...
On Po, 06 srp 2001, Alexandre Julliard wrote:
Ladislav Sladecek lsla@post.cz writes:
Maybe the printer driver never gets initialised? (Just a stupid speculation).
Not stupid at all, actually the 16-bit driver support is temporarily broken (not that it really worked well before anyway). It shouldn't be too hard to fix, but I haven't had time yet. Volunteers are welcome...
I continued with my experimets.
1) The application _is_ braindead; Andreas Mohr is right. The application has tried to open the ,, driver always, even before the July 26th when the crashes started. This is harmless by itself. On 27th, Alexandre Julliard just added an error message to the CreateDC. - if (!(funcs = DRIVER_FindDriver( buf ))) return 0; + if (!(funcs = DRIVER_load_driver( buf ))) + { + ERR( "no driver found for %s\n", buf ); + return 0; + } The error message confused me as it has not been there before.
2) The real reason for the crash is that the application calls Escape16 with hdc equal to 0 and function equal to GETPRINTINGOFFSET. I do not understand why, they did not even start to print. Maybe, this is an undocumented windows function? After I temporarily disabled Escape16, the application began to work.
3) Now, the CS_PARENTDC, WS_CLIPSIBLINGS fix works fine for me, thank you.
4) To fix Escape16, the 16bit printer driver is necessary. I need printing either. I will try to work on it if you just give me a piece of advice. I think that two ways are possible:
A) To use the static table and to modify create_driver to work with it.
B] To create a 16bit printer driver DLL similarly to the 32bit drivers.
Whis one is better?
Ladislav Sladecek