#include "stdafx.h" #include "SShellNofityHwnd2.h" namespace SOUI { CShellNotifyHwnd2::CShellNotifyHwnd2(SHostWnd * pMainWnd, SShellNotifyIcon* shellnotifyicon) :m_pMainWnd(pMainWnd),m_ShellNotifyIcon(shellnotifyicon) { MsgTaskbarCreated = RegisterWindowMessage(_T("TaskbarCreated")); Create(_T("shell_nofity_msg_windows"), 0, 0, 0, 0, 0, 0, HWND_MESSAGE, nullptr); } //托盘通知消息处理函数 LRESULT CShellNotifyHwnd2::OnIconNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL) { LRESULT bRet = S_FALSE; switch (lParam) { case WM_RBUTTONDOWN: { m_ShellNotifyIcon->ShowMenu(); bRet = S_OK; }break; case WM_LBUTTONDOWN: { if (m_pMainWnd->IsWindowVisible()) m_pMainWnd->ShowWindow(SW_HIDE); else { m_pMainWnd->ShowWindow(SW_SHOW); if(m_pMainWnd->IsIconic()) { m_pMainWnd->SendMessage(WM_SYSCOMMAND,SC_RESTORE); } SetForegroundWindow(m_pMainWnd->m_hWnd); } bRet = S_OK; }break; } return bRet; } LRESULT CShellNotifyHwnd2::OnTaskbarCreated(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL) { return m_ShellNotifyIcon->Show(); } void CShellNotifyHwnd2::OnFinalMessage(HWND hWnd) { __super::OnFinalMessage(hWnd); delete this; } void CShellNotifyHwnd2::OnTimer(UINT_PTR nIDEvent) { switch (nIDEvent) { case ANI_TIMER_ID: { m_ShellNotifyIcon->NextFrame(); }break; default: break; } } }