2025-11-27 16:46:48 +09:00

59 lines
1.4 KiB
C++

#include "stdafx.h"
#include "SSITaskbarIcon.h"
#include "resource.h" // main symbols
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSSITaskbarIcon
BEGIN_MESSAGE_MAP(CSSITaskbarIcon, COXTaskbarIcon)
//{{AFX_MSG_MAP(CSSITaskbarIcon)
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CSSITaskbarIcon::OnRButtonUp(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
// on right click show menu
DoPopupMenu();
}
void CSSITaskbarIcon::OnLButtonDblClk(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
// on double click restore the position of window on screen
::PostMessage(m_pPopupOwner->m_hWnd, WM_COMMAND, IDM_RESTORE, (LPARAM)m_hWnd);
}
void CSSITaskbarIcon::DoPopupMenu()
{
CMenu popMenu;
VERIFY(popMenu.LoadMenu(IDR_TRAYICON_POPUPMENU));
// set default item
MENUITEMINFO itemInfo={ sizeof(MENUITEMINFO) };
itemInfo.fMask=MIIM_STATE;
itemInfo.fState=MFS_DEFAULT;
::SetMenuItemInfo(popMenu.m_hMenu,IDM_RESTORE,FALSE,&itemInfo);
CPoint posMouse;
GetCursorPos(&posMouse);
// show menu
m_pPopupOwner->SendMessage(WM_NCACTIVATE,FALSE);
popMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
posMouse.x, posMouse.y, m_pPopupOwner);
}