QoiPreviewHandler.h
1 #pragma once 2 3 #include "pch.h" 4 5 #include <filesystem> 6 #include <ShlObj.h> 7 #include <string> 8 9 class QoiPreviewHandler : 10 public IInitializeWithFile, 11 public IPreviewHandler, 12 public IPreviewHandlerVisuals, 13 public IOleWindow, 14 public IObjectWithSite 15 { 16 public: 17 // IUnknown 18 IFACEMETHODIMP QueryInterface(REFIID riid, void** ppv); 19 IFACEMETHODIMP_(ULONG) AddRef(); 20 IFACEMETHODIMP_(ULONG) Release(); 21 22 // IInitializeWithFile 23 IFACEMETHODIMP Initialize(LPCWSTR pszFilePath, DWORD grfMode); 24 25 // IPreviewHandler 26 IFACEMETHODIMP SetWindow(HWND hwnd, const RECT* prc); 27 IFACEMETHODIMP SetFocus(); 28 IFACEMETHODIMP QueryFocus(HWND* phwnd); 29 IFACEMETHODIMP TranslateAccelerator(MSG* pmsg); 30 IFACEMETHODIMP SetRect(const RECT* prc); 31 IFACEMETHODIMP DoPreview(); 32 IFACEMETHODIMP Unload(); 33 34 // IPreviewHandlerVisuals 35 IFACEMETHODIMP SetBackgroundColor(COLORREF color); 36 IFACEMETHODIMP SetFont(const LOGFONTW* plf); 37 IFACEMETHODIMP SetTextColor(COLORREF color); 38 39 // IOleWindow 40 IFACEMETHODIMP GetWindow(HWND* phwnd); 41 IFACEMETHODIMP ContextSensitiveHelp(BOOL fEnterMode); 42 43 // IObjectWithSite 44 IFACEMETHODIMP SetSite(IUnknown* punkSite); 45 IFACEMETHODIMP GetSite(REFIID riid, void** ppv); 46 47 QoiPreviewHandler(); 48 protected: 49 ~QoiPreviewHandler(); 50 51 private: 52 // Reference count of component. 53 long m_cRef; 54 55 // Provided during initialization. 56 std::wstring m_filePath; 57 58 // Parent window that hosts the previewer window. 59 // Note: do NOT DestroyWindow this. 60 HWND m_hwndParent; 61 // Bounding rect of the parent window. 62 RECT m_rcParent; 63 64 // Site pointer from host, used to get IPreviewHandlerFrame. 65 IUnknown* m_punkSite; 66 67 HANDLE m_process; 68 HANDLE m_resizeEvent; 69 };