Home | History | Annotate | Download | only in win
      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 
     13 namespace ui {
     14 
     15 class 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 
     77 namespace 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.
     82 WIN_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