mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.0 KiB
141 lines
5.0 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
//
|
|
// File: items.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef _INC_CSCUI_ITEMS_H
|
|
#define _INC_CSCUI_ITEMS_H
|
|
|
|
|
|
#ifndef _INC_SHELL_IDLDATA_H
|
|
# include "idldata.h"
|
|
#endif
|
|
|
|
class COfflineItemsData : public CIDLData
|
|
{
|
|
public:
|
|
COfflineItemsData(LPCITEMIDLIST pidlFolder,
|
|
UINT cidl,
|
|
LPCITEMIDLIST *apidl,
|
|
HWND hwndParent,
|
|
IShellFolder *psfOwner = NULL,
|
|
IDataObject *pdtInner = NULL);
|
|
|
|
~COfflineItemsData(void);
|
|
|
|
STDMETHODIMP GetData(FORMATETC *pFEIn, STGMEDIUM *pstm);
|
|
STDMETHODIMP SetData(FORMATETC *pFEIn, STGMEDIUM *pstm, BOOL fRelease);
|
|
STDMETHODIMP QueryGetData(FORMATETC *pFE);
|
|
|
|
|
|
static HRESULT CreateInstance(COfflineItemsData **ppOut,
|
|
LPCITEMIDLIST pidlFolder,
|
|
UINT cidl,
|
|
LPCITEMIDLIST *apidl,
|
|
HWND hwndParent,
|
|
IShellFolder *psfOwner = NULL,
|
|
IDataObject *pdtInner = NULL);
|
|
|
|
static HRESULT CreateInstance(IDataObject **ppOut,
|
|
LPCITEMIDLIST pidlFolder,
|
|
UINT cidl,
|
|
LPCITEMIDLIST *apidl,
|
|
HWND hwndParent,
|
|
IShellFolder *psfOwner = NULL,
|
|
IDataObject *pdtInner = NULL);
|
|
|
|
HRESULT CtorResult(void) const
|
|
{ return m_hrCtor; }
|
|
|
|
protected:
|
|
HRESULT ProvideFormats(CEnumFormatEtc *pEnumFmtEtc);
|
|
|
|
private:
|
|
HWND m_hwndParent;
|
|
LPCOLID *m_rgpolid; // Pidls cloned in private format.
|
|
int m_cItems;
|
|
HRESULT m_hrCtor;
|
|
DWORD m_dwPreferredEffect;
|
|
DWORD m_dwPerformedEffect;
|
|
DWORD m_dwLogicalPerformedEffect;
|
|
|
|
static CLIPFORMAT m_cfHDROP;
|
|
static CLIPFORMAT m_cfFileContents;
|
|
static CLIPFORMAT m_cfFileDesc;
|
|
static CLIPFORMAT m_cfPreferedEffect;
|
|
static CLIPFORMAT m_cfPerformedEffect;
|
|
static CLIPFORMAT m_cfLogicalPerformedEffect;
|
|
static CLIPFORMAT m_cfDataSrcClsid;
|
|
|
|
HRESULT CreateFileDescriptor(STGMEDIUM *pstm);
|
|
HRESULT CreateFileContents(STGMEDIUM *pstm, LONG lindex);
|
|
HRESULT CreatePrefDropEffect(STGMEDIUM *pstm);
|
|
HRESULT CreatePerformedDropEffect(STGMEDIUM *pstm);
|
|
HRESULT CreateLogicalPerformedDropEffect(STGMEDIUM *pstm);
|
|
HRESULT CreateHDROP(STGMEDIUM *pstm);
|
|
HRESULT CreateDataSrcClsid(STGMEDIUM *pstm);
|
|
HRESULT CreateDWORD(STGMEDIUM *pstm, DWORD dwEffect);
|
|
DWORD GetDataDWORD(FORMATETC *pfe, STGMEDIUM *pstm, DWORD *pdwOut);
|
|
|
|
//
|
|
// Prevent copy.
|
|
//
|
|
COfflineItemsData(const COfflineItemsData& rhs);
|
|
COfflineItemsData& operator = (const COfflineItemsData& rhs);
|
|
};
|
|
|
|
|
|
|
|
|
|
class COfflineItems : public IContextMenu,
|
|
public IQueryInfo
|
|
{
|
|
public:
|
|
HRESULT Initialize(UINT cidl, LPCITEMIDLIST *ppidl);
|
|
|
|
//
|
|
// IUnknown Methods
|
|
//
|
|
STDMETHODIMP QueryInterface(REFIID,void **);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//
|
|
// IContextMenu Methods
|
|
//
|
|
STDMETHODIMP QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
|
|
STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici);
|
|
STDMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uType,UINT *pwReserved, LPSTR pszName, UINT cchMax);
|
|
|
|
//
|
|
// IQueryInfo Methods
|
|
//
|
|
STDMETHODIMP GetInfoTip(DWORD dwFlags, WCHAR **ppwszTip);
|
|
STDMETHODIMP GetInfoFlags(DWORD *pdwFlags);
|
|
|
|
static HRESULT CreateInstance(COfflineFilesFolder *pfolder,
|
|
HWND hwnd,
|
|
UINT cidl,
|
|
LPCITEMIDLIST *ppidl,
|
|
REFIID riid,
|
|
void **ppv);
|
|
private:
|
|
//
|
|
// Only create through CreateInstance() static function.
|
|
//
|
|
COfflineItems(COfflineFilesFolder *pfolder, HWND hwnd);
|
|
~COfflineItems();
|
|
|
|
LONG m_cRef; // reference count
|
|
COfflineFilesFolder *m_pFolder; // back pointer to our shell folder
|
|
UINT m_cItems; // number of items we represent
|
|
LPCOLID *m_ppolid; // variable size array of items
|
|
HWND m_hwndBrowser;
|
|
};
|
|
|
|
#endif // _INC_CSCUI_ITEMS_H
|