/ src / modules / previewpane / MarkdownPreviewHandlerCpp / MarkdownPreviewHandler.h
MarkdownPreviewHandler.h
 1  #pragma once
 2  
 3  #include "pch.h"
 4  
 5  #include <filesystem>
 6  #include <ShlObj.h>
 7  #include <string>
 8  
 9  class MarkdownPreviewHandler :
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      MarkdownPreviewHandler();
48  protected:
49      ~MarkdownPreviewHandler();
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  };