-// THUMBBUTTON flags
-#define THBF_ENABLED 0x0000
-#define THBF_DISABLED 0x0001
-#define THBF_DISMISSONCLICK 0x0002
-#define THBF_NOBACKGROUND 0x0004
-#define THBF_HIDDEN 0x0008
-
-// THUMBBUTTON mask
-#define THB_BITMAP 0x0001
-#define THB_ICON 0x0002
-#define THB_TOOLTIP 0x0004
-#define THB_FLAGS 0x0008
-#define THBN_CLICKED 0x1800
-
-typedef struct ITaskbarList3Vtbl
+typedef enum THUMBBUTTONMASK {
+ THB_BITMAP = 0x1,
+ THB_ICON = 0x2,
+ THB_TOOLTIP = 0x4,
+ THB_FLAGS = 0x8
+} THUMBBUTTONMASK;
+
+typedef enum THUMBBUTTONFLAGS {
+ THBF_ENABLED = 0x0,
+ THBF_DISABLED = 0x1,
+ THBF_DISMISSONCLICK = 0x2,
+ THBF_NOBACKGROUND = 0x4,
+ THBF_HIDDEN = 0x8,
+ THBF_NONINTERACTIVE = 0x10
+} THUMBBUTTONFLAGS;
+
+#ifdef __cplusplus
+interface ITaskbarList : public IUnknown {
+public:
+ virtual HRESULT WINAPI HrInit(void) = 0;
+ virtual HRESULT WINAPI AddTab(HWND hwnd) = 0;
+ virtual HRESULT WINAPI DeleteTab(HWND hwnd) = 0;
+ virtual HRESULT WINAPI ActivateTab(HWND hwnd) = 0;
+ virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;
+};
+
+interface ITaskbarList2 : public ITaskbarList {
+public:
+ virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;
+};
+
+interface ITaskbarList3 : public ITaskbarList2
+{
+ virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
+ HWND hwnd,
+ ULONGLONG ullCompleted,
+ ULONGLONG ullTotal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetProgressState(
+ HWND hwnd,
+ TBPFLAG tbpFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterTab(
+ HWND hwndTab,
+ HWND hwndMDI) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
+ HWND hwndTab) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
+ HWND hwndTab,
+ HWND hwndInsertBefore) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetTabActive(
+ HWND hwndTab,
+ HWND hwndMDI,
+ DWORD dwReserved) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
+ HWND hwnd,
+ UINT cButtons,
+ LPTHUMBBUTTON pButton) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
+ HWND hwnd,
+ UINT cButtons,
+ LPTHUMBBUTTON pButton) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
+ HWND hwnd,
+ HIMAGELIST himl) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
+ HWND hwnd,
+ HICON hIcon,
+ LPCWSTR pszDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
+ HWND hwnd,
+ LPCWSTR pszTip) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
+ HWND hwnd,
+ RECT *prcClip) = 0;
+
+};
+
+#else /* !__cplusplus */
+
+struct ITaskbarList3Vtbl;
+struct ITaskbarList3 { struct ITaskbarList3Vtbl* lpVtbl; };
+typedef struct ITaskbarList3 ITaskbarList3;
+
+struct ITaskbarList3Vtbl