1 /*
   2  * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #ifndef AWT_TASKBAR_H
  27 #define AWT_TASKBAR_H
  28 
  29 #include <windows.h>
  30 #include <shlobj.h>
  31 
  32 
  33 #ifndef __ITaskbarList_INTERFACE_DEFINED__
  34 #define __ITaskbarList_INTERFACE_DEFINED__
  35 extern "C" {
  36     const GUID CLSID_TaskbarList = {0x56FDF344, 0xFD6D, 0x11D0,
  37         {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
  38     const GUID IID_ITaskbarList = {0x56FDF342, 0xFD6D, 0x11D0,
  39         {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}};
  40 }
  41 
  42 class ITaskbarList : public IUnknown {
  43 public:
  44     virtual HRESULT STDMETHODCALLTYPE HrInit(void) = 0;
  45     virtual HRESULT STDMETHODCALLTYPE AddTab(HWND hwnd) = 0;
  46     virtual HRESULT STDMETHODCALLTYPE DeleteTab(HWND hwnd) = 0;
  47     virtual HRESULT STDMETHODCALLTYPE ActivateTab(HWND hwnd) = 0;
  48     virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(HWND hwnd) = 0;
  49 };
  50 #endif  /* ITaskbarList */
  51 
  52 #ifndef __ITaskbarList2_INTERFACE_DEFINED__
  53 #define __ITaskbarList2_INTERFACE_DEFINED__
  54 
  55 class ITaskbarList2 : public ITaskbarList {
  56 public:
  57     virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(HWND hwnd, BOOL fFullscreen) = 0;
  58 };
  59 #endif  /* ITaskbarList2 */
  60 
  61 #ifndef __ITaskbarList3_INTERFACE_DEFINED__
  62 #define __ITaskbarList3_INTERFACE_DEFINED__
  63 
  64 typedef enum THUMBBUTTONFLAGS {
  65     THBF_ENABLED = 0, THBF_DISABLED = 0x1, THBF_DISMISSONCLICK = 0x2, THBF_NOBACKGROUND = 0x4, THBF_HIDDEN = 0x8, THBF_NONINTERACTIVE = 0x10
  66 } THUMBBUTTONFLAGS;
  67 
  68 typedef enum THUMBBUTTONMASK {
  69     THB_BITMAP = 0x1, THB_ICON = 0x2, THB_TOOLTIP = 0x4, THB_FLAGS = 0x8
  70 } THUMBBUTTONMASK;
  71 
  72 typedef struct THUMBBUTTON {
  73     THUMBBUTTONMASK dwMask;
  74     UINT iId;
  75     UINT iBitmap;
  76     HICON hIcon;
  77     WCHAR szTip[260];
  78     THUMBBUTTONFLAGS dwFlags;
  79 } THUMBBUTTON;
  80 
  81 typedef enum TBPFLAG {
  82     TBPF_NOPROGRESS = 0, TBPF_INDETERMINATE = 0x1, TBPF_NORMAL = 0x2, TBPF_ERROR = 0x4, TBPF_PAUSED = 0x8
  83 } TBPFLAG;
  84 #define THBN_CLICKED  0x1800    
  85 
  86 class ITaskbarList3 : public ITaskbarList2 {
  87 public:
  88     virtual HRESULT STDMETHODCALLTYPE SetProgressValue(HWND hwnd, ULONGLONG ullCompleted, ULONGLONG ullTotal) = 0;
  89     virtual HRESULT STDMETHODCALLTYPE SetProgressState(HWND hwnd, TBPFLAG tbpFlags) = 0;
  90     virtual HRESULT STDMETHODCALLTYPE RegisterTab(HWND hwndTab, HWND hwndMDI) = 0;
  91     virtual HRESULT STDMETHODCALLTYPE UnregisterTab(HWND hwndTab) = 0;
  92     virtual HRESULT STDMETHODCALLTYPE SetTabOrder(HWND hwndTab, HWND hwndInsertBefore) = 0;
  93     virtual HRESULT STDMETHODCALLTYPE SetTabActive(HWND hwndTab, HWND hwndMDI, DWORD dwReserved) = 0;
  94     virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0;
  95     virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(HWND hwnd, UINT cButtons, THUMBBUTTON * pButton) = 0;
  96     virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(HWND hwnd, HIMAGELIST himl) = 0;
  97     virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(HWND hwnd, HICON hIcon, LPCWSTR pszDescription) = 0;
  98     virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(HWND hwnd, LPCWSTR pszTip) = 0;
  99     virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(HWND hwnd, RECT *prcClip) = 0;
 100 };
 101 #endif  /* ITaskbarList3 */
 102 
 103 
 104 ITaskbarList3 * m_Taskbar;
 105 
 106 
 107 #endif  /* AWT_TASKBAR_H */
 108