CS_PARENTDC with WS_CLIPSIBLINGS

Ladislav Sladecek lsla at post.cz
Tue Aug 7 18:13:07 CDT 2001


On Po, 06 srp 2001, Alexandre Julliard wrote:
> Ladislav Sladecek <lsla at 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




More information about the wine-devel mailing list