94 lines
3.4 KiB
C++
94 lines
3.4 KiB
C++
HRESULT GetElementRootHWNDElement(Element *pe, HWNDElement **pphwndeRoot);
|
|
HRESULT GetElementRootHWND(Element *pe, HWND *phwnd);
|
|
|
|
class ActionTask: public Element
|
|
{
|
|
public:
|
|
static HRESULT Create(OUT Element** ppElement) { return Create(0, NULL, NULL, NULL, NULL, ppElement); }
|
|
static HRESULT Create(UINT nActive, OUT Element** ppElement) { return Create(nActive, NULL, NULL, NULL, NULL, ppElement); }
|
|
static HRESULT Create(UINT nActive, IUICommand* puiCommand, IShellItemArray* psiItemArray, CDUIView* pDUIView, CDefView* pDefView, OUT Element** ppElement);
|
|
|
|
// System event callbacks
|
|
virtual void OnPropertyChanged(PropertyInfo* ppi, int iIndex, Value* pvOld, Value* pvNew);
|
|
|
|
// Generic events
|
|
virtual void OnEvent(Event* pEvent);
|
|
|
|
// ClassInfo accessors (static and virtual instance-based)
|
|
static IClassInfo* Class;
|
|
virtual IClassInfo* GetClassInfo() { return Class; }
|
|
static HRESULT Register();
|
|
|
|
void UpdateTaskUI();
|
|
|
|
ActionTask();
|
|
virtual ~ActionTask();
|
|
|
|
protected:
|
|
HRESULT Initialize(IUICommand* puiCommand, IShellItemArray* psiItemArray, CDUIView* pDUIView, CDefView* pDefView);
|
|
HRESULT InitializeElement(); // init ActionTask DUI Element
|
|
HRESULT InitializeButton(); // init ActionTask's DUI Button
|
|
HRESULT ShowInfotipWindow(BOOL bShow);
|
|
|
|
private:
|
|
Button* _peButton;
|
|
IUICommand* _puiCommand;
|
|
IShellItemArray* _psiItemArray;
|
|
CDUIView* _pDUIView; // weak link - do not ref.
|
|
CDefView* _pDefView;
|
|
HWND _hwndRoot; // cache of root hwnd element's hwnd
|
|
BOOL _bInfotip; // TRUE if infotip has been created
|
|
};
|
|
|
|
|
|
class DestinationTask: public Element
|
|
{
|
|
public:
|
|
static HRESULT Create(OUT Element** ppElement) { return Create(0, NULL, NULL, NULL, ppElement); }
|
|
static HRESULT Create(UINT nActive, OUT Element** ppElement) { return Create(nActive, NULL, NULL, NULL, ppElement); }
|
|
static HRESULT Create(UINT nActive, LPITEMIDLIST pidl, CDUIView* pDUIView, CDefView* pDefView, OUT Element** ppElement);
|
|
|
|
// System event callbacks
|
|
virtual void OnPropertyChanged(PropertyInfo* ppi, int iIndex, Value* pvOld, Value* pvNew);
|
|
|
|
// Generic events
|
|
virtual void OnEvent(Event* pEvent);
|
|
|
|
virtual UINT MessageCallback(GMSG* pGMsg);
|
|
|
|
// ClassInfo accessors (static and virtual instance-based)
|
|
static IClassInfo* Class;
|
|
virtual IClassInfo* GetClassInfo() { return Class; }
|
|
static HRESULT Register();
|
|
|
|
DestinationTask();
|
|
virtual ~DestinationTask();
|
|
|
|
protected:
|
|
HRESULT Initialize(LPITEMIDLIST pidl, CDUIView* pDUIView, CDefView *pDefView);
|
|
HRESULT InitializeElement(); // init DestinationTask DUI Element
|
|
HRESULT InitializeButton(HICON hIcon, LPCWSTR pwszTitle); // init DestinationTask's DUI Button
|
|
HRESULT InvokePidl();
|
|
HRESULT OnContextMenu(POINT *ppt);
|
|
HRESULT ShowInfotipWindow(BOOL bShow);
|
|
|
|
HWND GetHWND()
|
|
{
|
|
if (!_peHost)
|
|
GetElementRootHWNDElement(this, &_peHost);
|
|
return _peHost ? _peHost->GetHWND() : NULL;
|
|
}
|
|
|
|
|
|
private:
|
|
Button* _peButton;
|
|
LPITEMIDLIST _pidlDestination;
|
|
CDUIView* _pDUIView;
|
|
CDefView* _pDefView;
|
|
HWND _hwndRoot; // cache of root hwnd element's hwnd
|
|
BOOL _bInfotip; // TRUE if infotip has been created
|
|
|
|
// Caching host information
|
|
HWNDElement * _peHost;
|
|
};
|