API for change the visibility of button in the taskbar.

- ShowInTaskbar and HideInTaskbar
- Sample of usage.

Author: Chaobin Zhang

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Chaobin, Zhang 2014-09-10 08:40:39 +00:00
parent 1fa04989f3
commit 3de2241fa7
4 changed files with 41 additions and 2 deletions

View File

@ -21,6 +21,8 @@ public:
virtual ~wxTaskBarButtonImpl();
virtual void SetProgressValue(int value) wxOVERRIDE;
virtual void ShowInTaskbar() wxOVERRIDE;
virtual void HideInTaskbar() wxOVERRIDE;
private:
friend class wxTopLevelWindowMSW;

View File

@ -25,6 +25,8 @@ public:
// Operations:
virtual void SetProgressValue(int value) = 0;
virtual void ShowInTaskbar() = 0;
virtual void HideInTaskbar() = 0;
private:
wxDECLARE_NO_COPY_CLASS(wxTaskBarButton);

View File

@ -22,6 +22,7 @@
enum
{
ProgressValueSlider = wxID_HIGHEST,
VisibilityRadio,
};
class MyApp : public wxApp
@ -39,8 +40,10 @@ private:
wxDECLARE_EVENT_TABLE();
void OnSetProgressValue(wxScrollEvent& WXUNUSED(event));
void OnVisibilityChange(wxCommandEvent& WXUNUSED(event));
wxSlider *m_slider;
wxRadioBox *m_visibilityRadioBox;
};
IMPLEMENT_APP(MyApp)
@ -74,7 +77,19 @@ MyFrame::MyFrame(const wxString& title)
m_slider->SetTickFreq(10);
spvSizer->Add(m_slider);
// Show/Hide in Taskbar section.
const wxString labels[] =
{
"&Show in Taskbar",
"&Hide in Taskbar"
};
m_visibilityRadioBox = new wxRadioBox(panel, VisibilityRadio, "Visibility:",
wxDefaultPosition, wxDefaultSize,
WXSIZEOF(labels), labels,
1, wxRA_SPECIFY_ROWS);
gs->Add(spvSizer, 0, wxEXPAND);
gs->Add(m_visibilityRadioBox, 0, wxEXPAND);
wxStaticText *text = new wxStaticText(
panel, wxID_ANY, wxT("Welcome to wxTaskbarButton sample"));
@ -90,9 +105,18 @@ MyFrame::MyFrame(const wxString& title)
wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_COMMAND_SCROLL_CHANGED(ProgressValueSlider, MyFrame::OnSetProgressValue)
EVT_RADIOBOX(VisibilityRadio, MyFrame::OnVisibilityChange)
wxEND_EVENT_TABLE()
void MyFrame::OnSetProgressValue(wxScrollEvent& WXUNUSED(event))
{
MSWGetTaskBarButton()->SetProgressValue(m_slider->GetValue());
}
void MyFrame::OnVisibilityChange(wxCommandEvent& WXUNUSED(event))
{
if ( m_visibilityRadioBox->GetSelection() == 0 )
MSWGetTaskBarButton()->ShowInTaskbar();
else
MSWGetTaskBarButton()->HideInTaskbar();
}

View File

@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/msw/taskbarbutton.cpp
// Purpose: Implements wxTaskbarButtonImpl class for manipulating buttons on
// Purpose: Implements wxTaskBarButtonImpl class for manipulating buttons on
// the Windows taskbar.
// Author: Chaobin Zhang <zhchbin@gmail.com>
// Created: 2014-06-01
@ -22,7 +22,8 @@
#include <Shobjidl.h>
wxTaskBarButtonImpl::wxTaskBarButtonImpl(WXWidget parent) : m_hwnd(parent)
wxTaskBarButtonImpl::wxTaskBarButtonImpl(WXWidget parent)
: m_hwnd(parent), m_taskbarList(NULL)
{
HRESULT hr = CoCreateInstance
(
@ -60,4 +61,14 @@ void wxTaskBarButtonImpl::SetProgressValue(int value)
m_taskbarList->SetProgressValue(m_hwnd, value, 100);
}
void wxTaskBarButtonImpl::ShowInTaskbar()
{
m_taskbarList->AddTab(m_hwnd);
}
void wxTaskBarButtonImpl::HideInTaskbar()
{
m_taskbarList->DeleteTab(m_hwnd);
}
#endif // wxUSE_TASKBARBUTTON