You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.2 KiB
C++
139 lines
3.2 KiB
C++
// XTPTaskbarManager.h: interface for the CXTPTaskbarManager class.
|
|
//
|
|
// This file is a part of the XTREME CONTROLS MFC class library.
|
|
// (c)1998-2012 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
#if !defined(__XTPTASKBARMANAGER_H__)
|
|
#define __XTPTASKBARMANAGER_H__
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
interface ITaskbarList3;
|
|
interface ICustomDestinationList;
|
|
interface IObjectArray;
|
|
interface IShellItem;
|
|
interface IShellLinkW;
|
|
|
|
|
|
enum XTPTaskbarProgressFlag
|
|
{
|
|
xtpProgressFlagNoProgress = 0,
|
|
xtpProgressFlagIndeterminate = 0x1,
|
|
xtpProgressFlagNormal = 0x2,
|
|
xtpProgressFlagError = 0x4,
|
|
xtpProgressFlagPaused = 0x8
|
|
};
|
|
|
|
|
|
|
|
class _XTP_EXT_CLASS CXTPTaskbarManagerJumpList : public CXTPCmdTarget
|
|
{
|
|
protected:
|
|
struct CTask
|
|
{
|
|
CString m_strPath;
|
|
CString m_strArguments;
|
|
CString m_strTitle;
|
|
CString m_strIconPath;
|
|
int m_nIconIndex;
|
|
};
|
|
|
|
protected:
|
|
CXTPTaskbarManagerJumpList();
|
|
~CXTPTaskbarManagerJumpList();
|
|
|
|
public:
|
|
void AddTask(LPCTSTR lpszPath, LPCTSTR lpszArgument, LPCTSTR lpszTitle, LPCTSTR lpszIconPath, int nIconIndex = -1);
|
|
void Clear();
|
|
void CommitList();
|
|
|
|
|
|
|
|
private:
|
|
void DeleteList();
|
|
void BuildList();
|
|
|
|
private:
|
|
HRESULT AddUserTasks();
|
|
HRESULT AddCustomCategory();
|
|
|
|
HRESULT CreateShellLink(LPCWSTR lpszApp, LPCWSTR lpszCommandLine, LPCWSTR lpszTitle, LPCWSTR lpszIconPath, int nIconIndex, IShellLinkW** ppSL);
|
|
BOOL IsItemInArray(IShellItem* pSI, IObjectArray* pArray);
|
|
|
|
private:
|
|
ICustomDestinationList* m_pcdl;
|
|
IObjectArray* m_poaRemoved;
|
|
|
|
friend class CXTPTaskbarManager;
|
|
|
|
CArray<CTask, CTask&> m_arrTask;
|
|
|
|
#ifdef _XTP_ACTIVEX
|
|
//{{AFX_CODEJOCK_PRIVATE
|
|
public:
|
|
DECLARE_DISPATCH_MAP()
|
|
DECLARE_INTERFACE_MAP()
|
|
DECLARE_OLETYPELIB_EX(CXTPTaskbarManagerJumpList);
|
|
|
|
//}}AFX_CODEJOCK_PRIVATE
|
|
#endif
|
|
};
|
|
|
|
|
|
class _XTP_EXT_CLASS CXTPTaskbarManager
|
|
{
|
|
|
|
// Constructor
|
|
public:
|
|
CXTPTaskbarManager();
|
|
virtual ~CXTPTaskbarManager();
|
|
|
|
public:
|
|
|
|
void SetProgressBarRange(HWND hWndParent, int nRangeMin, int nRangeMax);
|
|
void SetProgressBarPosition(HWND hWndParent, int nProgressPos);
|
|
void SetProgressBarState(HWND hWndParent, int nFlags);
|
|
|
|
|
|
BOOL SetOverlayIcon(HWND hWndParent, HICON hIcon, LPCTSTR lpszDescription);
|
|
BOOL SetOverlayIcon(HWND hWndParent, UINT nIDResource, LPCTSTR lpszDescription);
|
|
|
|
public:
|
|
CXTPTaskbarManagerJumpList* GetJumpList() const;
|
|
|
|
// Implementation
|
|
protected:
|
|
|
|
int m_nProgressBarRangeMax;
|
|
int m_nProgressBarRangeMin;
|
|
|
|
ITaskbarList3* m_pTaskbarList3;
|
|
|
|
CXTPTaskbarManagerJumpList* m_pJumpList;
|
|
};
|
|
|
|
AFX_INLINE CXTPTaskbarManagerJumpList* CXTPTaskbarManager::GetJumpList() const {
|
|
return m_pJumpList;
|
|
}
|
|
|
|
#endif // #if !defined(__XTPTASKBARMANAGER_H__)
|