ReactOS 0.4.15-dev-6057-gd708c79
CCopyToMoveToMenu.h
Go to the documentation of this file.
1/*
2 * PROJECT: shell32
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: CopyTo and MoveTo implementation
5 * COPYRIGHT: Copyright 2020 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6 */
7#pragma once
8
9
11 public CComCoClass<CCopyToMenu, &CLSID_CopyToMenu>,
12 public CComObjectRootEx<CComMultiThreadModelNoCS>,
13 public IContextMenu2,
14 public IObjectWithSite,
15 public IShellExtInit
16{
17protected:
19 CComPtr<IDataObject> m_pDataObject;
20 CComPtr<IUnknown> m_pSite;
21
24 CStringW DoGetFileTitle();
25
26public:
27 CComHeapPtr<ITEMIDLIST> m_pidlFolder;
30
33
34 // IContextMenu
35 virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
37 virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen);
38
39 // IContextMenu2
41
42 // IShellExtInit
43 virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID);
44
45 // IObjectWithSite
46 virtual HRESULT WINAPI SetSite(IUnknown *pUnkSite);
47 virtual HRESULT WINAPI GetSite(REFIID riid, void **ppvSite);
48
51
53
55 COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
56 COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
57 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit)
60};
61
63 public CComCoClass<CMoveToMenu, &CLSID_MoveToMenu>,
64 public CComObjectRootEx<CComMultiThreadModelNoCS>,
65 public IContextMenu2,
66 public IObjectWithSite,
67 public IShellExtInit
68{
69protected:
70 UINT m_idCmdFirst, m_idCmdLast, m_idCmdMoveTo;
71 CComPtr<IDataObject> m_pDataObject;
72 CComPtr<IUnknown> m_pSite;
73
74 HRESULT DoMoveToFolder(LPCMINVOKECOMMANDINFO lpici);
75 HRESULT DoRealMove(LPCMINVOKECOMMANDINFO lpici, PCUIDLIST_ABSOLUTE pidl);
76 CStringW DoGetFileTitle();
77
78public:
79 CComHeapPtr<ITEMIDLIST> m_pidlFolder;
82
85
86 // IContextMenu
87 virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
89 virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen);
90
91 // IContextMenu2
93
94 // IShellExtInit
95 virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID);
96
97 // IObjectWithSite
98 virtual HRESULT WINAPI SetSite(IUnknown *pUnkSite);
99 virtual HRESULT WINAPI GetSite(REFIID riid, void **ppvSite);
100
103
105
107 COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
108 COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
109 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit, IShellExtInit)
112};
const WCHAR * class
Definition: main.c:68
virtual HRESULT WINAPI InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
CComPtr< IDataObject > m_pDataObject
BOOL m_bIgnoreTextBoxChange
CComPtr< IUnknown > m_pSite
CComHeapPtr< ITEMIDLIST > m_pidlFolder
CStringW DoGetFileTitle()
virtual HRESULT WINAPI GetSite(REFIID riid, void **ppvSite)
HRESULT DoRealCopy(LPCMINVOKECOMMANDINFO lpici, PCUIDLIST_ABSOLUTE pidl)
virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen)
virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
virtual HRESULT WINAPI HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
WNDPROC m_fnOldWndProc
HRESULT DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici)
virtual HRESULT WINAPI SetSite(IUnknown *pUnkSite)
BOOL m_bIgnoreTextBoxChange
CComHeapPtr< ITEMIDLIST > m_pidlFolder
CComPtr< IUnknown > m_pSite
WNDPROC m_fnOldWndProc
CComPtr< IDataObject > m_pDataObject
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
UINT uFlags
Definition: api.c:59
unsigned int BOOL
Definition: ntddk_ex.h:94
REFIID riid
Definition: atlbase.h:39
#define BEGIN_COM_MAP(x)
Definition: atlcom.h:581
#define COM_INTERFACE_ENTRY_IID(iid, x)
Definition: atlcom.h:601
#define DECLARE_PROTECT_FINAL_CONSTRUCT()
Definition: atlcom.h:679
#define DECLARE_NOT_AGGREGATABLE(x)
Definition: atlcom.h:651
#define DECLARE_REGISTRY_RESOURCEID(x)
Definition: atlcom.h:645
#define END_COM_MAP()
Definition: atlcom.h:592
const IID IID_IObjectWithSite
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
#define REFIID
Definition: guiddef.h:118
#define IDR_MOVETOMENU
Definition: shresdef.h:889
#define IDR_COPYTOMENU
Definition: shresdef.h:888
const ITEMIDLIST_ABSOLUTE UNALIGNED * PCUIDLIST_ABSOLUTE
Definition: shtypes.idl:63
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2896
static void Initialize()
Definition: xlate.c:212
char * LPSTR
Definition: xmlstorage.h:182