ultimatepp/bazaar/UltimatePlayer/TaskbarButton.cpp
unodgs 0463a45fdf Added UltimatePlayer
git-svn-id: svn://ultimatepp.org/upp/trunk@1167 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2009-05-12 20:02:10 +00:00

71 lines
1.2 KiB
C++

#include <CtrlLib/CtrlLib.h>
using namespace Upp;
#include "TaskbarButton.h"
TaskbarButton::TaskbarButton()
{
SetRect(0, 0, 16, 16);
Zero(nid);
nid.cbSize = sizeof(nid);
nid.uCallbackMessage = UM_TASKBAR;
NoWantFocus();
}
TaskbarButton::~TaskbarButton()
{
Flush(NIM_DELETE);
nid.uID = 0;
}
TaskbarButton& TaskbarButton::Icon(const Image &img)
{
icon = img;
Flush(NIM_MODIFY);
return *this;
}
TaskbarButton& TaskbarButton::Tip(const char *text)
{
tip = text;
Flush(NIM_MODIFY);
return *this;
}
void TaskbarButton::Init(HWND hwnd)
{
nid.hWnd = hwnd;
nid.uID = 1;
Flush(NIM_ADD);
}
void TaskbarButton::PassNotification(UINT lParam)
{
switch(lParam)
{
case WM_LBUTTONDOWN:
Action();
return;
case WM_LBUTTONUP:
WhenLeftUp();
return;
case WM_LBUTTONDBLCLK:
WhenLeftDouble();
return;
case WM_RBUTTONDOWN:
MenuBar::Execute(this, WhenBar, GetMousePos());
return;
}
}
void TaskbarButton::Flush(dword msg)
{
if(nid.uID)
{
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.hIcon = IconWin32(icon);
int len = tip.GetLength();
memcpy(nid.szTip, tip, len);
nid.szTip[len] = 0;
VERIFY(Shell_NotifyIcon(msg, &nid));
}
}