|I hope I'm asking in the right place.
I don't have Win8 machine available and my computer can't run Win8 in a virtual machine, so I'm asking for help from someone with Win8 machine to find out why my code doesn't work in Win8.
I received request for a small project, namely Explorer thumbnail shell extension for OpenRaster (*.ora) files saved by the MyPaint application.
OpenRaster files have the same structure as OpenOffice files (*.odt, etc...), the thumbnail is stored as "Thumbnails\thumbnail.png" inside the zip file.
I've made similar thumbnail shell extensions before and I have working code from previous projects but it's a bit more complicated.
This time I got inspired by article I found here (Google translate FTW!):
Apparently you can use CompressedFolder zip storage handler COM object (from zipfldr.dll) as described in the article, pretty elegant and lightweight even though it doesn't support Unicode file names inside zip.
My code finds and extracts thumbnail.png inside the zip and loads it with ATL::CImage.
I've made this activex dll (ATL project, source + 32/64bit binaries):
I use VC2008 Express + Win7 SDK + ATL7 headers (from WDK) and I started off with VC6 ATL project skeleton.
Everything compiles without warnings and everything worked fine both on XP and Win7 32/64-bit but I'm told it doesn't work on Win8 x64, the dll is registered and thumbnail cache cleared but no thumbnails are generated, and I couldn't say where's the problem without access to Win8 machine.
Here is a small Win32/ATL dialog project that tests the extracting code:
Inside the zip is the source, compiled exe (debug release) and 2 test files (1 good and 1 with invalid thumbnail). The dialog accepts dropped files and shows the thumbnail if successful.
It pops up a messagebox with a description of HRESULT error and calling location in source file (just hit Ctrl+C to copy text from messagebox).
I don't know what is the problem, is my activex dll code broken or is the extracting code broken, do I need to compile with VS2012/WinSDK8 or something else, so if someone could help me track down the problem (compile and debug), it would be greatly appreciated.
My apologies if my post is chaotic, I try to describe in as much detail I can.