1// Copyright (c) 2010 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#pragma once
8
9#include <windows.h>
10
11#include "chrome/browser/status_icons/status_tray.h"
12
13class 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 protected:
24  // Overriden from StatusTray:
25  virtual StatusIcon* CreatePlatformStatusIcon();
26
27 private:
28  // Static callback invoked when a message comes in to our messaging window.
29  static LRESULT CALLBACK WndProcStatic(HWND hwnd,
30                                        UINT message,
31                                        WPARAM wparam,
32                                        LPARAM lparam);
33
34  // The unique icon ID we will assign to the next icon.
35  UINT next_icon_id_;
36
37  // The window used for processing events.
38  HWND window_;
39
40  // The message ID of the "TaskbarCreated" message, sent to us when we need to
41  // reset our status icons.
42  UINT taskbar_created_message_;
43
44  DISALLOW_COPY_AND_ASSIGN(StatusTrayWin);
45};
46
47#endif  // CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_STATUS_TRAY_WIN_H_
48
49