by OtakuAdmin » Tue Sep 19, 2006 1:38 pm
We haven't said we won't add OpenOffice support, we've said we *can't* add OpenOffice support. It's not something we're holding off on or don't want to do, it's just not technically possible (to the best of our knowledge) to take a screenshot of a Java window. Please remember that the Windows XP graphics system hasn't changed much from the days of Windows 3.1 (nearly 14 years ago!), and is *very* primitive compared to the graphics systems of OS X and Vista.
A more in-depth explanation of the problem:
The only way to properly take a screenshot of a window under Windows XP is to use the "PrintWindow" graphics function (*). This function is the core of TopDesk; without it TopDesk wouldn't be possible.
The function works by sending a special version of the WM_PAINT message to the window that tricks the window into drawing itself to an image buffer in memory instead of on-screen when it responds to the message.
Almost all native Windows applications redraw themselves when they receive a WM_PAINT message, so most of the time PrintWindow (and therefore TopDesk) works. Unfortunately Java windows don't draw themselves when they receive a WM_PAINT message, so nothing gets drawn into the image buffer in memory. Since there's nothing in the image buffer, there's nothing for TopDesk to draw.
As with other issues caused by the technical limitations of Windows XP that have been mentioned in this forum, if we could fix this problem we would. There's nothing we would like better than having TopDesk be a 100% seamless experience.
--
(*) You can also take a screenshot of a window using the BitBlt function (this is what the PrintScreen key uses). Unfortunately if there are windows on top of the window you're taking the screenshot of, they will also show up in the screen shot. If the window is completely covered by other windows, all you'll see are those other windows. We've tested TopDesk out using this function and it makes TopDesk almost unusable - most windows have another window at least partially covering them, which makes trying to identify each individual window very difficult.