Exemplo 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);
		}
	}
}
Exemplo n.º 2
0
// 获取托盘图标区域位置
BOOL CTrayIcon::GetTrayIconRect(RECT * lpRect)
{
	if (NULL == lpRect)
		return FALSE;

	::SetRectEmpty(lpRect);

	HWND hWnd = FindTrayNotifyWnd();
	if (hWnd != NULL)
	{
		if (!EnumNotifyWindow(hWnd, *lpRect))		// 如果没在普通托盘区
		{
			hWnd = FindNotifyIconOverflowWindow();	// 在溢出区(win7)
			if (hWnd != NULL)
			{
				EnumNotifyWindow(hWnd, *lpRect);
			}
		}
	}

	return TRUE;
}