OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 REMOTING_HOST_WIN_MESSAGE_WINDOW_H_ | |
6 #define REMOTING_HOST_WIN_MESSAGE_WINDOW_H_ | |
7 | |
8 #include <windows.h> | |
9 | |
10 #include <string> | |
11 | |
12 #include "base/basictypes.h" | |
13 #include "base/compiler_specific.h" | |
14 #include "base/threading/non_thread_safe.h" | |
15 | |
16 namespace remoting { | |
17 namespace win { | |
18 | |
19 // Implements a message-only window. | |
20 class MessageWindow : base::NonThreadSafe { | |
21 public: | |
22 // Handles incoming window messages. | |
23 class Delegate { | |
24 public: | |
25 virtual ~Delegate() {} | |
26 | |
27 virtual bool HandleMessage(HWND hwnd, | |
28 UINT message, | |
29 WPARAM wparam, | |
30 LPARAM lparam, | |
31 LRESULT* result) = 0; | |
32 }; | |
33 | |
34 MessageWindow(); | |
35 MessageWindow(const std::string& class_name, HINSTANCE instance); | |
36 ~MessageWindow(); | |
37 | |
38 // Registers the window class and creates the window. The incoming messages | |
39 // will be handled by |delegate|. |delegate| must outlive |this|. | |
40 bool Create(Delegate* delegate); | |
41 | |
42 HWND hwnd() const { return window_; } | |
43 | |
44 private: | |
45 // Invoked by the OS to process incoming window messages. | |
46 static LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, | |
47 LPARAM lparam); | |
48 | |
49 // Atom representing the registered window class. | |
50 ATOM atom_; | |
51 | |
52 // MessageWindow class name. | |
53 std::string class_name_; | |
54 | |
55 // Instance of the module containing the window procedure. | |
56 HINSTANCE instance_; | |
57 | |
58 // Handle of the input window. | |
59 HWND window_; | |
60 | |
61 DISALLOW_COPY_AND_ASSIGN(MessageWindow); | |
62 }; | |
63 | |
64 } // namespace win | |
65 } // namespace remoting | |
66 | |
67 #endif // REMOTING_HOST_WIN_MESSAGE_WINDOW_H_ | |
OLD | NEW |