win_window.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2014 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_PLATFORM_WINDOW_WIN_WIN_WINDOW_H_
6#define UI_PLATFORM_WINDOW_WIN_WIN_WINDOW_H_
7
8#include "base/compiler_specific.h"
9#include "ui/gfx/win/window_impl.h"
10#include "ui/platform_window/platform_window.h"
11#include "ui/platform_window/win/win_window_export.h"
12
13namespace ui {
14
15class WIN_WINDOW_EXPORT WinWindow : public NON_EXPORTED_BASE(PlatformWindow),
16                                    public gfx::WindowImpl {
17 public:
18  WinWindow(PlatformWindowDelegate* delegate, const gfx::Rect& bounds);
19  virtual ~WinWindow();
20
21 private:
22  void Destroy();
23
24  // PlatformWindow:
25  virtual void Show() OVERRIDE;
26  virtual void Hide() OVERRIDE;
27  virtual void Close() OVERRIDE;
28  virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
29  virtual gfx::Rect GetBounds() OVERRIDE;
30  virtual void SetCapture() OVERRIDE;
31  virtual void ReleaseCapture() OVERRIDE;
32  virtual void ToggleFullscreen() OVERRIDE;
33  virtual void Maximize() OVERRIDE;
34  virtual void Minimize() OVERRIDE;
35  virtual void Restore() OVERRIDE;
36  virtual void SetCursor(PlatformCursor cursor) OVERRIDE;
37  virtual void MoveCursorTo(const gfx::Point& location) OVERRIDE;
38
39  CR_BEGIN_MSG_MAP_EX(WinWindow)
40    CR_MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
41    CR_MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE,
42                                WM_NCXBUTTONDBLCLK,
43                                OnMouseRange)
44    CR_MESSAGE_HANDLER_EX(WM_CAPTURECHANGED, OnCaptureChanged)
45
46    CR_MESSAGE_HANDLER_EX(WM_KEYDOWN, OnKeyEvent)
47    CR_MESSAGE_HANDLER_EX(WM_KEYUP, OnKeyEvent)
48    CR_MESSAGE_HANDLER_EX(WM_SYSKEYDOWN, OnKeyEvent)
49    CR_MESSAGE_HANDLER_EX(WM_SYSKEYUP, OnKeyEvent)
50    CR_MESSAGE_HANDLER_EX(WM_CHAR, OnKeyEvent)
51    CR_MESSAGE_HANDLER_EX(WM_SYSCHAR, OnKeyEvent)
52    CR_MESSAGE_HANDLER_EX(WM_IME_CHAR, OnKeyEvent)
53    CR_MESSAGE_HANDLER_EX(WM_NCACTIVATE, OnNCActivate)
54
55    CR_MSG_WM_CLOSE(OnClose)
56    CR_MSG_WM_CREATE(OnCreate)
57    CR_MSG_WM_DESTROY(OnDestroy)
58    CR_MSG_WM_PAINT(OnPaint)
59    CR_MSG_WM_WINDOWPOSCHANGED(OnWindowPosChanged)
60  CR_END_MSG_MAP()
61
62  LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param);
63  LRESULT OnCaptureChanged(UINT message, WPARAM w_param, LPARAM l_param);
64  LRESULT OnKeyEvent(UINT message, WPARAM w_param, LPARAM l_param);
65  LRESULT OnNCActivate(UINT message, WPARAM w_param, LPARAM l_param);
66  void OnClose();
67  LRESULT OnCreate(CREATESTRUCT* create_struct);
68  void OnDestroy();
69  void OnPaint(HDC);
70  void OnWindowPosChanged(WINDOWPOS* window_pos);
71
72  PlatformWindowDelegate* delegate_;
73
74  DISALLOW_COPY_AND_ASSIGN(WinWindow);
75};
76
77namespace test {
78
79// Set true to let WindowTreeHostWin use a popup window
80// with no frame/title so that the window size and test's
81// expectations matches.
82WIN_WINDOW_EXPORT void SetUsePopupAsRootWindowForTest(bool use);
83
84}  // namespace test
85
86}  // namespace ui
87
88#endif  // UI_PLATFORM_WINDOW_WIN_WIN_WINDOW_H_
89