Hi Kambiz,
as far as I can see GDI+ patch works but it's not complete...
First of all as you can see here:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
the output member of the GdiplusStartup function can be nil only if the SuppressBackgroundThread of the input parameter is false.
In your most recent gdi patch you set SuppressBackgroundThread to true but left output parameter to nil.
It seems to work but if you activate SYNOPSE define, it will hangs again as described in:
http://mikevdm.com/BlogEntry/Key/Gdiplu ... steriously
Synopse code infact sets correctly the output parameter.
I've tried to modify the TPrintPreview code to mimic the very same synopse behavior and all works great (the synopse code is quite different and requires further investigations and error handling, but it's a good starting point imho).