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
55 SHELLNEW_ITEM
*m_pItems
;
56 SHELLNEW_ITEM
*m_pLinkItem
;
59 HBITMAP m_hbmFolder
, m_hbmLink
;
61 SHELLNEW_ITEM
*LoadItem(LPCWSTR pwszExt
);
62 void UnloadItem(SHELLNEW_ITEM
*pItem
);
63 void UnloadAllItems();
65 UINT
InsertShellNewItems(HMENU hMenu
, UINT idFirst
, UINT idMenu
);
66 SHELLNEW_ITEM
*FindItemFromIdOffset(UINT IdOffset
);
67 HRESULT
CreateNewFolder(IShellView
*psv
);
68 HRESULT
CreateNewItem(SHELLNEW_ITEM
*pItem
, LPCMINVOKECOMMANDINFO lpcmi
, IShellView
*psv
);
75 virtual HRESULT STDMETHODCALLTYPE
SetSite(IUnknown
*pUnkSite
);
76 virtual HRESULT STDMETHODCALLTYPE
GetSite(REFIID riid
, void **ppvSite
);
79 virtual HRESULT WINAPI
QueryContextMenu(HMENU hMenu
, UINT indexMenu
, UINT idCmdFirst
, UINT idCmdLast
, UINT uFlags
);
80 virtual HRESULT WINAPI
InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi
);
81 virtual HRESULT WINAPI
GetCommandString(UINT_PTR idCommand
, UINT uFlags
, UINT
*lpReserved
, LPSTR lpszName
, UINT uMaxNameLen
);
84 virtual HRESULT WINAPI
HandleMenuMsg(UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
87 virtual HRESULT STDMETHODCALLTYPE
Initialize(LPCITEMIDLIST pidlFolder
, IDataObject
*pdtobj
, HKEY hkeyProgID
);
89 DECLARE_REGISTRY_RESOURCEID(IDR_NEWMENU
)
90 DECLARE_NOT_AGGREGATABLE(CNewMenu
)
92 DECLARE_PROTECT_FINAL_CONSTRUCT()
94 BEGIN_COM_MAP(CNewMenu
)
95 COM_INTERFACE_ENTRY_IID(IID_IObjectWithSite
, IObjectWithSite
)
96 COM_INTERFACE_ENTRY_IID(IID_IContextMenu2
, IContextMenu2
)
97 COM_INTERFACE_ENTRY_IID(IID_IContextMenu
, IContextMenu
)
98 COM_INTERFACE_ENTRY_IID(IID_IShellExtInit
, IShellExtInit
)
102 #endif /* _SHV_ITEM_NEW_H_ */