OLD | NEW |
| (Empty) |
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 UI_BASE_WIN_SINGLETON_HWND_H_ | |
6 #define UI_BASE_WIN_SINGLETON_HWND_H_ | |
7 | |
8 #include <windows.h> | |
9 #include <vector> | |
10 | |
11 #include "base/basictypes.h" | |
12 #include "base/callback_forward.h" | |
13 #include "base/observer_list.h" | |
14 #include "ui/base/win/window_impl.h" | |
15 | |
16 template<typename T> struct DefaultSingletonTraits; | |
17 | |
18 namespace ui { | |
19 | |
20 // Singleton message-only HWND that allows interested clients to receive WM_* | |
21 // notifications. | |
22 class SingletonHwnd : public WindowImpl { | |
23 public: | |
24 static SingletonHwnd* GetInstance(); | |
25 | |
26 // Observer interface for receiving Windows WM_* notifications. | |
27 class Observer { | |
28 public: | |
29 virtual void OnWndProc(HWND hwnd, | |
30 UINT message, | |
31 WPARAM wparam, | |
32 LPARAM lparam) = 0; | |
33 }; | |
34 | |
35 // Add/remove observer to receive WM_* notifications. | |
36 void AddObserver(Observer* observer); | |
37 void RemoveObserver(Observer* observer); | |
38 | |
39 // Windows callback for WM_* notifications. | |
40 virtual BOOL ProcessWindowMessage(HWND window, | |
41 UINT message, | |
42 WPARAM wparam, | |
43 LPARAM lparam, | |
44 LRESULT& result, | |
45 DWORD msg_map_id) OVERRIDE; | |
46 | |
47 private: | |
48 friend struct DefaultSingletonTraits<SingletonHwnd>; | |
49 | |
50 SingletonHwnd(); | |
51 ~SingletonHwnd(); | |
52 | |
53 // List of registered observers. | |
54 ObserverList<Observer> observer_list_; | |
55 | |
56 DISALLOW_COPY_AND_ASSIGN(SingletonHwnd); | |
57 }; | |
58 | |
59 } // namespace ui | |
60 | |
61 #endif // UI_BASE_WIN_SINGLETON_HWND_H_ | |
OLD | NEW |