OSDN Git Service

Initial revision
[winmerge-jp/winmerge-jp.git] / ShellExtension / WinMergeShell.h
1 // WinMergeShell.h : Declaration of the CWinMergeShell
2
3 #ifndef __WINMERGESHELL_H_
4 #define __WINMERGESHELL_H_
5
6 #include <shlobj.h>
7 #include <comdef.h>
8 #include <atlconv.h>  // for ATL string conversion macros
9 #include "resource.h"       // main symbols
10
11 /////////////////////////////////////////////////////////////////////////////
12 // CWinMergeShell
13 class ATL_NO_VTABLE CWinMergeShell : 
14         public CComObjectRootEx<CComSingleThreadModel>,
15         public CComCoClass<CWinMergeShell, &CLSID_WinMergeShell>,
16         public IDispatchImpl<IWinMergeShell, &IID_IWinMergeShell, &LIBID_SHELLEXTENSIONLib>,
17         public IShellExtInit,
18         public IContextMenu
19 {
20 public:
21         CWinMergeShell();
22
23 DECLARE_REGISTRY_RESOURCEID(IDR_WINMERGESHELL)
24
25 DECLARE_PROTECT_FINAL_CONSTRUCT()
26
27 BEGIN_COM_MAP(CWinMergeShell)
28         COM_INTERFACE_ENTRY(IWinMergeShell)
29         COM_INTERFACE_ENTRY(IDispatch)
30         COM_INTERFACE_ENTRY(IShellExtInit)
31         COM_INTERFACE_ENTRY(IContextMenu)
32 END_COM_MAP()
33
34 // IWinMergeShell
35 protected:
36     CString m_strPaths[2];
37         HBITMAP m_hMergeBmp;
38         UINT    m_nSelectedItems;
39
40         BOOL GetWinMergeDir(CString &strDir);
41
42 public:
43     // IShellExtInit
44     STDMETHOD(Initialize)(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
45
46     // IContextMenu
47     STDMETHOD(GetCommandString)(UINT, UINT, UINT*, LPSTR, UINT);
48     STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO);
49     STDMETHOD(QueryContextMenu)(HMENU, UINT, UINT, UINT, UINT);
50 };
51
52 #endif //__WINMERGESHELL_H_