+void wxTaskBarIcon::OnRButtonDClick(wxEvent&)
+{
+}
+
+void wxTaskBarIcon::_OnMouseMove(wxEvent& e) { OnMouseMove(e); }
+void wxTaskBarIcon::_OnLButtonDown(wxEvent& e) { OnLButtonDown(e); }
+void wxTaskBarIcon::_OnLButtonUp(wxEvent& e) { OnLButtonUp(e); }
+void wxTaskBarIcon::_OnRButtonDown(wxEvent& e) { OnRButtonDown(e); }
+void wxTaskBarIcon::_OnRButtonUp(wxEvent& e) { OnRButtonUp(e); }
+void wxTaskBarIcon::_OnLButtonDClick(wxEvent& e) { OnLButtonDClick(e); }
+void wxTaskBarIcon::_OnRButtonDClick(wxEvent& e) { OnRButtonDClick(e); }
+
+
+wxTaskBarIcon* wxTaskBarIcon::FindObjectForHWND(WXHWND hWnd)
+{
+ wxNode*node = sm_taskBarIcons.First();
+ while (node)
+ {
+ wxTaskBarIcon* obj = (wxTaskBarIcon*) node->Data();
+ if (obj->GetHWND() == hWnd)
+ return obj;
+ node = node->Next();
+ }
+ return NULL;
+}
+
+void wxTaskBarIcon::AddObject(wxTaskBarIcon* obj)
+{
+ sm_taskBarIcons.Append(obj);
+}
+
+void wxTaskBarIcon::RemoveObject(wxTaskBarIcon* obj)
+{
+ sm_taskBarIcons.DeleteObject(obj);
+}
+
+bool wxTaskBarIcon::RegisterWindowClass()
+{
+ if (sm_registeredClass)
+ return TRUE;
+
+ // Also register the taskbar message here
+// TODO:
+/*
+ sm_taskbarMsg = ::RegisterWindowMessage(wxT("wxTaskBarIconMessage"));
+
+ WNDCLASS wc;
+ bool rc;
+
+ HINSTANCE hInstance = GetModuleHandle(NULL);
+
+ //
+ // set up and register window class
+ //
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = (WNDPROC) wxTaskBarIconWindowProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = hInstance;
+ wc.hIcon = 0;
+ wc.hCursor = 0;
+ wc.hbrBackground = 0;
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = wxTaskBarWindowClass ;
+ rc = (::RegisterClass( &wc ) != 0);
+
+ sm_registeredClass = (rc != 0);
+
+ return( (rc != 0) );
+*/
+ return FALSE;
+}
+
+WXHWND wxTaskBarIcon::CreateTaskBarWindow()
+{
+// TODO:
+/*
+ HINSTANCE hInstance = GetModuleHandle(NULL);
+
+ HWND hWnd = CreateWindowEx (0, wxTaskBarWindowClass,
+ wxT("wxTaskBarWindow"),
+ WS_OVERLAPPED,
+ 0,
+ 0,
+ 10,
+ 10,
+ NULL,
+ (HMENU) 0,
+ hInstance,
+ NULL);
+
+ return (WXHWND) hWnd;
+*/
+ return (WXHWND)0;
+}
+
+MRESULT wxTaskBarIcon::WindowProc( WXHWND hWnd, UINT msg, MPARAM wParam, MPARAM lParam )
+{
+ wxEventType eventType = 0;
+// TODO:
+/*
+ if (msg != sm_taskbarMsg)
+ return DefWindowProc((HWND) hWnd, msg, wParam, lParam);
+
+ switch (lParam)
+ {
+ case WM_LBUTTONDOWN:
+ eventType = wxEVT_TASKBAR_LEFT_DOWN;
+ break;
+
+ case WM_LBUTTONUP:
+ eventType = wxEVT_TASKBAR_LEFT_UP;
+ break;
+
+ case WM_RBUTTONDOWN:
+ eventType = wxEVT_TASKBAR_RIGHT_DOWN;
+ break;
+
+ case WM_RBUTTONUP:
+ eventType = wxEVT_TASKBAR_RIGHT_UP;
+ break;
+
+ case WM_LBUTTONDBLCLK:
+ eventType = wxEVT_TASKBAR_LEFT_DCLICK;
+ break;
+
+ case WM_RBUTTONDBLCLK:
+ eventType = wxEVT_TASKBAR_RIGHT_DCLICK;
+ break;
+
+ case WM_MOUSEMOVE:
+ eventType = wxEVT_TASKBAR_MOVE;
+ break;
+
+ default:
+ break;
+ }
+*/
+ if (eventType)
+ {
+ wxEvent event;
+ event.SetEventType(eventType);
+ event.SetEventObject(this);
+
+ ProcessEvent(event);
+ }
+ return 0;
+}
+
+MRESULT wxTaskBarIconWindowProc(
+ HWND hWnd
+, UINT msg
+, MPARAM wParam
+, MPARAM lParam
+)