2 * provides new shell item service
4 * Copyright 2007 Johannes Anderwald (johannes.anderwald@reactos.org)
5 * Copyright 2009 Andrew Hill
6 * Copyright 2012 Rafal Harabien
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 #ifndef _SHV_ITEM_NEW_H_
24 #define _SHV_ITEM_NEW_H_
27 public CComCoClass
<CNewMenu
, &CLSID_NewMenu
>,
28 public CComObjectRootEx
<CComMultiThreadModelNoCS
>,
29 public IObjectWithSite
,
36 SHELLNEW_TYPE_INVALID
= -1,
37 SHELLNEW_TYPE_COMMAND
= 1,
38 SHELLNEW_TYPE_DATA
= 2,
39 SHELLNEW_TYPE_FILENAME
= 4,
40 SHELLNEW_TYPE_NULLFILE
= 8
54 LPITEMIDLIST m_pidlFolder
;
56 SHELLNEW_ITEM
*m_pItems
;
57 SHELLNEW_ITEM
*m_pLinkItem
;
58 CComPtr
<IUnknown
> m_pSite
;
60 HICON m_hiconFolder
, m_hiconLink
;
63 SHELLNEW_ITEM
*LoadItem(LPCWSTR pwszExt
);
64 void UnloadItem(SHELLNEW_ITEM
*pItem
);
65 void UnloadAllItems();
67 UINT
InsertShellNewItems(HMENU hMenu
, UINT idFirst
, UINT idMenu
);
68 SHELLNEW_ITEM
*FindItemFromIdOffset(UINT IdOffset
);
69 HRESULT
CreateNewFolder(LPCMINVOKECOMMANDINFO lpici
);
70 HRESULT
CreateNewItem(SHELLNEW_ITEM
*pItem
, LPCMINVOKECOMMANDINFO lpcmi
);
71 HRESULT
SelectNewItem(LPCMINVOKECOMMANDINFO lpici
, LONG wEventId
, UINT uFlags
, LPWSTR pszName
);
78 virtual HRESULT STDMETHODCALLTYPE
SetSite(IUnknown
*pUnkSite
);
79 virtual HRESULT STDMETHODCALLTYPE
GetSite(REFIID riid
, void **ppvSite
);
82 virtual HRESULT WINAPI
QueryContextMenu(HMENU hMenu
, UINT indexMenu
, UINT idCmdFirst
, UINT idCmdLast
, UINT uFlags
);
83 virtual HRESULT WINAPI
InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi
);
84 virtual HRESULT WINAPI
GetCommandString(UINT_PTR idCommand
, UINT uFlags
, UINT
*lpReserved
, LPSTR lpszName
, UINT uMaxNameLen
);
87 virtual HRESULT WINAPI
HandleMenuMsg2(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, LRESULT
*plResult
);
90 virtual HRESULT WINAPI
HandleMenuMsg(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
93 virtual HRESULT STDMETHODCALLTYPE
Initialize(LPCITEMIDLIST pidlFolder
, IDataObject
*pdtobj
, HKEY hkeyProgID
);
95 DECLARE_REGISTRY_RESOURCEID(IDR_NEWMENU
)
96 DECLARE_NOT_AGGREGATABLE(CNewMenu
)
98 DECLARE_PROTECT_FINAL_CONSTRUCT()
100 BEGIN_COM_MAP(CNewMenu
)
101 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite
, IObjectWithSite
)
102 COM_INTERFACE_ENTRY_IID(IID_IContextMenu3
, IContextMenu3
)
103 COM_INTERFACE_ENTRY_IID(IID_IContextMenu2
, IContextMenu2
)
104 COM_INTERFACE_ENTRY_IID(IID_IContextMenu
, IContextMenu
)
105 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit
, IShellExtInit
)
109 #endif /* _SHV_ITEM_NEW_H_ */