Esempio n. 1
0
void CTrayIcon::OnTimer( UINT_PTR nIDEvent )
{
	if ( nIDEvent == _defFlashIconTimerID )
	{
		if ( m_IsShowIcon )
		{
			FlashIconData Data = DecideFlashIconData();
			CIcon icon;
			icon.LoadIcon(Data.nIconNormal);
			ChangeIcon(icon);
			ChangeToolTip(Data.strTooltip);
			m_IsShowIcon = false;

		}
		else
		{
			FlashIconData Data = DecideFlashIconData();
			CIcon icon;
			icon.LoadIcon(Data.nIconFlash);
			ChangeIcon(icon);
			ChangeToolTip(Data.strTooltip);
			m_IsShowIcon = true;
		}
	}
	else if ( nIDEvent == _defIconLeaveTimerID )
	{
		POINT pt = {0};
		RECT rc;
		GetCursorPos(&pt);
		if ( GetTrayIconRect(FindTrayWnd(), m_hNotifyWnd, &rc) == S_FALSE)
		{
			GetTrayIconRect(FindNotifyIconOverflowWindow(), m_hNotifyWnd, &rc);
		}

		if ( !PtInRect(&rc,pt) )
		{
			BOOL b;
			OnTrayIconNotify(WM_TRAYICONNOTIFY, 0, WM_MOUSELEAVE, b);
		}
	}
}
Esempio n. 2
0
void CTrayIcon::OnTimer(UINT_PTR nIDEvent)
{
	if (nIDEvent == m_dwTimerId)
	{
		RECT rect;
		GetTrayIconRect(&rect);

		POINT pt = {0};
		::GetCursorPos(&pt);

		if (!::PtInRect(&rect, pt))
		{
			m_bHover = FALSE;
			::PostMessage(m_stNotifyIconData.hWnd, m_stNotifyIconData.uCallbackMessage, 
				m_stNotifyIconData.uID, WM_MOUSELEAVE);
			::KillTimer(m_stNotifyIconData.hWnd, m_dwTimerId);
			m_dwTimerId = NULL;
		}
	}
}