Home | History | Annotate | Download | only in status_icons
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_STATUS_TRAY_WIN_H_
      6 #define CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_STATUS_TRAY_WIN_H_
      7 
      8 #include <windows.h>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "chrome/browser/status_icons/status_tray.h"
     12 
     13 class StatusTrayWin : public StatusTray {
     14  public:
     15   StatusTrayWin();
     16   ~StatusTrayWin();
     17 
     18   // Exposed for testing.
     19   LRESULT CALLBACK WndProc(HWND hwnd,
     20                            UINT message,
     21                            WPARAM wparam,
     22                            LPARAM lparam);
     23 
     24  protected:
     25   // Overriden from StatusTray:
     26   virtual StatusIcon* CreatePlatformStatusIcon(
     27       StatusIconType type,
     28       const gfx::ImageSkia& image,
     29       const string16& tool_tip) OVERRIDE;
     30 
     31  private:
     32   // Static callback invoked when a message comes in to our messaging window.
     33   static LRESULT CALLBACK WndProcStatic(HWND hwnd,
     34                                         UINT message,
     35                                         WPARAM wparam,
     36                                         LPARAM lparam);
     37 
     38   UINT NextIconId();
     39 
     40   // The unique icon ID we will assign to the next icon.
     41   UINT next_icon_id_;
     42 
     43   // The window class of |window_|.
     44   ATOM atom_;
     45 
     46   // The handle of the module that contains the window procedure of |window_|.
     47   HMODULE instance_;
     48 
     49   // The window used for processing events.
     50   HWND window_;
     51 
     52   // The message ID of the "TaskbarCreated" message, sent to us when we need to
     53   // reset our status icons.
     54   UINT taskbar_created_message_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(StatusTrayWin);
     57 };
     58 
     59 #endif  // CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_STATUS_TRAY_WIN_H_
     60 
     61