#pragma once #include "stdafx.h" #include #include "resource.h" #include "beacon.h" #include "winsock2.h" #define WM_APP_TRAYMESSAGE WM_APP #define WM_APP_ADDBEACON WM_APP+1 // wParam: unused, lParam: IInternetGateway* #define WM_APP_REMOVEBEACON WM_APP+2 // wParam: unused, lParam: unused #define WM_APP_SOCKET_NOTIFICATION WM_APP+3 #define WM_APP_GETBEACON WM_APP+4 class CICSTrayIcon : public CWindowImpl { public: BEGIN_MSG_MAP(CICSTrayIcon) MESSAGE_HANDLER(WM_CREATE, OnCreate) MESSAGE_HANDLER(WM_CLOSE, OnClose) MESSAGE_HANDLER(WM_DESTROY, OnDestroy) MESSAGE_HANDLER(WM_APP_TRAYMESSAGE, OnTrayMessage) MESSAGE_HANDLER(WM_APP_ADDBEACON, OnAddBeacon) MESSAGE_HANDLER(WM_APP_REMOVEBEACON, OnRemoveBeacon) MESSAGE_HANDLER(WM_APP_SOCKET_NOTIFICATION, OnSocketNotification) MESSAGE_HANDLER(WM_APP_GETBEACON, OnGetBeacon) COMMAND_ID_HANDLER(IDM_TRAYICON_STATUS, OnStatus) COMMAND_ID_HANDLER(IDM_TRAYICON_PROPERTIES, OnProperties) COMMAND_ID_HANDLER(IDM_TRAYICON_CONNECT, OnConnect) COMMAND_ID_HANDLER(IDM_TRAYICON_DISCONNECT, OnDisconnect) END_MSG_MAP() CICSTrayIcon(); ~CICSTrayIcon(); private: HRESULT GetInternetGateway(IInternetGateway** ppInternetGateway); HRESULT ShowTrayIcon(UINT uID); HRESULT HideTrayIcon(UINT uID); HRESULT StartSearch(void); LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnEndSession(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnTrayMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnAddBeacon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnRemoveBeacon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSocketNotification(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnGetBeacon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnStatus(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); LRESULT OnProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); LRESULT OnConnect(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); LRESULT OnDisconnect(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); IInternetGateway* m_pInternetGateway; HRESULT m_hShowIconResult; IUPnPDeviceFinder* m_pDeviceFinder; LONG m_lSearchCookie; SOCKET m_DummySocket; BOOL m_bShowingProperties; BOOL m_bShowingStatus; DWORD m_dwRegisterClassCookie; BOOL m_bFileVersionsAccepted; };