summaryrefslogtreecommitdiffstats
path: root/chrome/views/widget/widget_win.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/views/widget/widget_win.h')
-rw-r--r--chrome/views/widget/widget_win.h636
1 files changed, 0 insertions, 636 deletions
diff --git a/chrome/views/widget/widget_win.h b/chrome/views/widget/widget_win.h
deleted file mode 100644
index 00ecb93..0000000
--- a/chrome/views/widget/widget_win.h
+++ /dev/null
@@ -1,636 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_VIEWS_WIDGET_WIDGET_WIN_H_
-#define CHROME_VIEWS_WIDGET_WIDGET_WIN_H_
-
-#include <atlbase.h>
-#include <atlcrack.h>
-
-#include "base/message_loop.h"
-#include "base/system_monitor.h"
-#include "chrome/views/focus/focus_manager.h"
-#include "chrome/views/layout_manager.h"
-#include "chrome/views/widget/widget.h"
-
-class ChromeCanvas;
-
-namespace gfx {
-class Rect;
-}
-
-namespace views {
-
-class RootView;
-class TooltipManager;
-class Window;
-
-bool SetRootViewForHWND(HWND hwnd, RootView* root_view);
-RootView* GetRootViewForHWND(HWND hwnd);
-
-// A Windows message reflected from other windows. This message is sent
-// with the following arguments:
-// hWnd - Target window
-// uMsg - kReflectedMessage
-// wParam - Should be 0
-// lParam - Pointer to MSG struct containing the original message.
-static const int kReflectedMessage = WM_APP + 3;
-
-// These two messages aren't defined in winuser.h, but they are sent to windows
-// with captions. They appear to paint the window caption and frame.
-// Unfortunately if you override the standard non-client rendering as we do
-// with CustomFrameWindow, sometimes Windows (not deterministically
-// reproducibly but definitely frequently) will send these messages to the
-// window and paint the standard caption/title over the top of the custom one.
-// So we need to handle these messages in CustomFrameWindow to prevent this
-// from happening.
-static const int WM_NCUAHDRAWCAPTION = 0xAE;
-static const int WM_NCUAHDRAWFRAME = 0xAF;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// WidgetWin
-// A Widget for a views hierarchy used to represent anything that can be
-// contained within an HWND, e.g. a control, a window, etc. Specializations
-// suitable for specific tasks, e.g. top level window, are derived from this.
-//
-// This Widget contains a RootView which owns the hierarchy of views within it.
-// As long as views are part of this tree, they will be deleted automatically
-// when the RootView is destroyed. If you remove a view from the tree, you are
-// then responsible for cleaning up after it.
-//
-///////////////////////////////////////////////////////////////////////////////
-class WidgetWin : public Widget,
- public MessageLoopForUI::Observer,
- public FocusTraversable,
- public AcceleratorTarget {
- public:
- WidgetWin();
- virtual ~WidgetWin();
-
- // Initialize the Widget with a parent and an initial desired size.
- // |contents_view| is the view that will be the single child of RootView
- // within this Widget. As contents_view is inserted into RootView's tree,
- // RootView assumes ownership of this view and cleaning it up. If you remove
- // this view, you are responsible for its destruction. If this value is NULL,
- // the caller is responsible for populating the RootView, and sizing its
- // contents as the window is sized.
- // If |has_own_focus_manager| is true, the focus traversal stay confined to
- // the window.
- void Init(HWND parent,
- const gfx::Rect& bounds,
- bool has_own_focus_manager);
-
- // Sets the specified view as the contents of this Widget. There can only
- // be one contnets view child of this Widget's RootView. This view is sized to
- // fit the entire size of the RootView. The RootView takes ownership of this
- // View, unless it is set as not being parent-owned.
- virtual void SetContentsView(View* view);
-
- // Sets the window styles. This is ONLY used when the window is created.
- // In other words, if you invoke this after invoking Init, nothing happens.
- void set_window_style(DWORD style) { window_style_ = style; }
- DWORD window_style() const { return window_style_; }
-
- // Sets the extended window styles. See comment about |set_window_style|.
- void set_window_ex_style(DWORD style) { window_ex_style_ = style; }
- DWORD window_ex_style() const { return window_ex_style_; };
-
- // Sets the class style to use. The default is CS_DBLCLKS.
- void set_initial_class_style(UINT class_style) {
- // We dynamically generate the class name, so don't register it globally!
- DCHECK((class_style & CS_GLOBALCLASS) == 0);
- class_style_ = class_style;
- }
- UINT initial_class_style() { return class_style_; }
-
- void set_delete_on_destroy(bool delete_on_destroy) {
- delete_on_destroy_ = delete_on_destroy;
- }
-
- // Sets the initial opacity of a layered window, or updates the window's
- // opacity if it is on the screen.
- void SetLayeredAlpha(BYTE layered_alpha);
-
- // See description of use_layered_buffer_ for details.
- void SetUseLayeredBuffer(bool use_layered_buffer);
-
- // Disable Layered Window updates by setting to false.
- void set_can_update_layered_window(bool can_update_layered_window) {
- can_update_layered_window_ = can_update_layered_window;
- }
-
- // Returns the RootView associated with the specified HWND (if any).
- static RootView* FindRootView(HWND hwnd);
-
- // Closes the window asynchronously by scheduling a task for it. The window
- // is destroyed as a result.
- // This invokes Hide to hide the window, and schedules a task that
- // invokes CloseNow.
- virtual void Close();
-
- // Hides the window. This does NOT delete the window, it just hides it.
- virtual void Hide();
-
- // Shows the window without changing size/position/activation state.
- virtual void Show();
-
- // Closes the window synchronously. Note that this should not be called from
- // an ATL message callback as it deletes the WidgetWin and ATL will
- // dereference it after the callback is processed.
- void CloseNow();
-
- // All classes registered by WidgetWin start with this name.
- static const wchar_t* const kBaseClassName;
-
- BEGIN_MSG_MAP_EX(0)
- // Range handlers must go first!
- MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
- MESSAGE_RANGE_HANDLER_EX(WM_NCMOUSEMOVE, WM_NCMOUSEMOVE, OnMouseRange)
-
- // Reflected message handler
- MESSAGE_HANDLER_EX(kReflectedMessage, OnReflectedMessage)
-
- // CustomFrameWindow hacks
- MESSAGE_HANDLER_EX(WM_NCUAHDRAWCAPTION, OnNCUAHDrawCaption)
- MESSAGE_HANDLER_EX(WM_NCUAHDRAWFRAME, OnNCUAHDrawFrame)
-
- // Vista and newer
- MESSAGE_HANDLER_EX(WM_DWMCOMPOSITIONCHANGED, OnDwmCompositionChanged)
-
- // Non-atlcrack.h handlers
- MESSAGE_HANDLER_EX(WM_GETOBJECT, OnGetObject)
- MESSAGE_HANDLER_EX(WM_NCMOUSELEAVE, OnNCMouseLeave)
- MESSAGE_HANDLER_EX(WM_MOUSELEAVE, OnMouseLeave)
- MESSAGE_HANDLER_EX(WM_MOUSEWHEEL, OnMouseWheel)
-
- // This list is in _ALPHABETICAL_ order! OR I WILL HURT YOU.
- MSG_WM_ACTIVATE(OnActivate)
- MSG_WM_ACTIVATEAPP(OnActivateApp)
- MSG_WM_APPCOMMAND(OnAppCommand)
- MSG_WM_CANCELMODE(OnCancelMode)
- MSG_WM_CAPTURECHANGED(OnCaptureChanged)
- MSG_WM_CLOSE(OnClose)
- MSG_WM_COMMAND(OnCommand)
- MSG_WM_CREATE(OnCreate)
- MSG_WM_DESTROY(OnDestroy)
- MSG_WM_ERASEBKGND(OnEraseBkgnd)
- MSG_WM_ENDSESSION(OnEndSession)
- MSG_WM_ENTERSIZEMOVE(OnEnterSizeMove)
- MSG_WM_EXITMENULOOP(OnExitMenuLoop)
- MSG_WM_GETMINMAXINFO(OnGetMinMaxInfo)
- MSG_WM_HSCROLL(OnHScroll)
- MSG_WM_INITMENU(OnInitMenu)
- MSG_WM_INITMENUPOPUP(OnInitMenuPopup)
- MSG_WM_KEYDOWN(OnKeyDown)
- MSG_WM_KEYUP(OnKeyUp)
- MSG_WM_SYSKEYDOWN(OnKeyDown)
- MSG_WM_SYSKEYUP(OnKeyUp)
- MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk)
- MSG_WM_LBUTTONDOWN(OnLButtonDown)
- MSG_WM_LBUTTONUP(OnLButtonUp)
- MSG_WM_MBUTTONDOWN(OnMButtonDown)
- MSG_WM_MBUTTONUP(OnMButtonUp)
- MSG_WM_MBUTTONDBLCLK(OnMButtonDblClk)
- MSG_WM_MOUSEACTIVATE(OnMouseActivate)
- MSG_WM_MOUSEMOVE(OnMouseMove)
- MSG_WM_MOVE(OnMove)
- MSG_WM_MOVING(OnMoving)
- MSG_WM_NCACTIVATE(OnNCActivate)
- MSG_WM_NCCALCSIZE(OnNCCalcSize)
- MSG_WM_NCHITTEST(OnNCHitTest)
- MSG_WM_NCMOUSEMOVE(OnNCMouseMove)
- MSG_WM_NCLBUTTONDBLCLK(OnNCLButtonDblClk)
- MSG_WM_NCLBUTTONDOWN(OnNCLButtonDown)
- MSG_WM_NCLBUTTONUP(OnNCLButtonUp)
- MSG_WM_NCMBUTTONDBLCLK(OnNCMButtonDblClk)
- MSG_WM_NCMBUTTONDOWN(OnNCMButtonDown)
- MSG_WM_NCMBUTTONUP(OnNCMButtonUp)
- MSG_WM_NCPAINT(OnNCPaint)
- MSG_WM_NCRBUTTONDBLCLK(OnNCRButtonDblClk)
- MSG_WM_NCRBUTTONDOWN(OnNCRButtonDown)
- MSG_WM_NCRBUTTONUP(OnNCRButtonUp)
- MSG_WM_NOTIFY(OnNotify)
- MSG_WM_PAINT(OnPaint)
- MSG_WM_POWERBROADCAST(OnPowerBroadcast)
- MSG_WM_RBUTTONDBLCLK(OnRButtonDblClk)
- MSG_WM_RBUTTONDOWN(OnRButtonDown)
- MSG_WM_RBUTTONUP(OnRButtonUp)
- MSG_WM_SETCURSOR(OnSetCursor)
- MSG_WM_SETFOCUS(OnSetFocus)
- MSG_WM_SETICON(OnSetIcon)
- MSG_WM_SETTEXT(OnSetText)
- MSG_WM_SETTINGCHANGE(OnSettingChange)
- MSG_WM_SIZE(OnSize)
- MSG_WM_SYSCOMMAND(OnSysCommand)
- MSG_WM_THEMECHANGED(OnThemeChanged)
- MSG_WM_VSCROLL(OnVScroll)
- MSG_WM_WINDOWPOSCHANGING(OnWindowPosChanging)
- MSG_WM_WINDOWPOSCHANGED(OnWindowPosChanged)
- END_MSG_MAP()
-
- // Overridden from Widget:
- virtual void GetBounds(gfx::Rect* out, bool including_frame) const;
- virtual gfx::NativeView GetNativeView() const;
- virtual void PaintNow(const gfx::Rect& update_rect);
- virtual RootView* GetRootView();
- virtual bool IsVisible() const;
- virtual bool IsActive() const;
- virtual TooltipManager* GetTooltipManager();
- virtual Window* GetWindow();
- virtual const Window* GetWindow() const;
-
- // Overridden from MessageLoop::Observer:
- void WillProcessMessage(const MSG& msg);
- virtual void DidProcessMessage(const MSG& msg);
-
- // Overridden from FocusTraversable:
- virtual View* FindNextFocusableView(View* starting_view,
- bool reverse,
- Direction direction,
- bool dont_loop,
- FocusTraversable** focus_traversable,
- View** focus_traversable_view);
- virtual FocusTraversable* GetFocusTraversableParent();
- virtual View* GetFocusTraversableParentView();
-
- // Overridden from AcceleratorTarget:
- virtual bool AcceleratorPressed(const Accelerator& accelerator) {
- return false;
- }
-
- void SetFocusTraversableParent(FocusTraversable* parent);
- void SetFocusTraversableParentView(View* parent_view);
-
- virtual bool GetAccelerator(int cmd_id, Accelerator* accelerator) {
- return false;
- }
-
- BOOL IsWindow() const {
- return ::IsWindow(GetNativeView());
- }
-
- BOOL ShowWindow(int command) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::ShowWindow(GetNativeView(), command);
- }
-
- HWND SetCapture() {
- DCHECK(::IsWindow(GetNativeView()));
- return ::SetCapture(GetNativeView());
- }
-
- HWND GetParent() const {
- return ::GetParent(GetNativeView());
- }
-
- LONG GetWindowLong(int index) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::GetWindowLong(GetNativeView(), index);
- }
-
- BOOL GetWindowRect(RECT* rect) const {
- return ::GetWindowRect(GetNativeView(), rect);
- }
-
- LONG SetWindowLong(int index, LONG new_long) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::SetWindowLong(GetNativeView(), index, new_long);
- }
-
- BOOL SetWindowPos(HWND hwnd_after, int x, int y, int cx, int cy, UINT flags) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::SetWindowPos(GetNativeView(), hwnd_after, x, y, cx, cy, flags);
- }
-
- BOOL IsZoomed() const {
- DCHECK(::IsWindow(GetNativeView()));
- return ::IsZoomed(GetNativeView());
- }
-
- BOOL MoveWindow(int x, int y, int width, int height) {
- return MoveWindow(x, y, width, height, TRUE);
- }
-
- BOOL MoveWindow(int x, int y, int width, int height, BOOL repaint) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::MoveWindow(GetNativeView(), x, y, width, height, repaint);
- }
-
- int SetWindowRgn(HRGN region, BOOL redraw) {
- DCHECK(::IsWindow(GetNativeView()));
- return ::SetWindowRgn(GetNativeView(), region, redraw);
- }
-
- BOOL GetClientRect(RECT* rect) const {
- DCHECK(::IsWindow(GetNativeView()));
- return ::GetClientRect(GetNativeView(), rect);
- }
-
- protected:
-
- // Call close instead of this to Destroy the window.
- BOOL DestroyWindow() {
- DCHECK(::IsWindow(GetNativeView()));
- return ::DestroyWindow(GetNativeView());
- }
-
- // Message Handlers
- // These are all virtual so that specialized Widgets can modify or augment
- // processing.
- // This list is in _ALPHABETICAL_ order!
- // Note: in the base class these functions must do nothing but convert point
- // coordinates to client coordinates (if necessary) and forward the
- // handling to the appropriate Process* function. This is so that
- // subclasses can easily override these methods to do different things
- // and have a convenient function to call to get the default behavior.
- virtual void OnActivate(UINT action, BOOL minimized, HWND window) {
- SetMsgHandled(FALSE);
- }
- virtual void OnActivateApp(BOOL active, DWORD thread_id) {
- SetMsgHandled(FALSE);
- }
- virtual LRESULT OnAppCommand(HWND window, short app_command, WORD device,
- int keystate) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnCancelMode() {}
- virtual void OnCaptureChanged(HWND hwnd);
- virtual void OnClose();
- virtual void OnCommand(UINT notification_code, int command_id, HWND window) {
- SetMsgHandled(FALSE);
- }
- virtual LRESULT OnCreate(LPCREATESTRUCT create_struct) { return 0; }
- // WARNING: If you override this be sure and invoke super, otherwise we'll
- // leak a few things.
- virtual void OnDestroy();
- virtual LRESULT OnDwmCompositionChanged(UINT msg,
- WPARAM w_param,
- LPARAM l_param) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnEndSession(BOOL ending, UINT logoff) { SetMsgHandled(FALSE); }
- virtual void OnEnterSizeMove() { SetMsgHandled(FALSE); }
- virtual void OnExitMenuLoop(BOOL is_track_popup_menu) {
- SetMsgHandled(FALSE);
- }
- virtual LRESULT OnEraseBkgnd(HDC dc);
- virtual LRESULT OnGetObject(UINT uMsg, WPARAM w_param, LPARAM l_param);
- virtual void OnGetMinMaxInfo(MINMAXINFO* minmax_info) {
- SetMsgHandled(FALSE);
- }
- virtual void OnHScroll(int scroll_type, short position, HWND scrollbar) {
- SetMsgHandled(FALSE);
- }
- virtual void OnInitMenu(HMENU menu) { SetMsgHandled(FALSE); }
- virtual void OnInitMenuPopup(HMENU menu, UINT position, BOOL is_system_menu) {
- SetMsgHandled(FALSE);
- }
- virtual void OnKeyDown(TCHAR c, UINT rep_cnt, UINT flags);
- virtual void OnKeyUp(TCHAR c, UINT rep_cnt, UINT flags);
- virtual void OnLButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnLButtonDown(UINT flags, const CPoint& point);
- virtual void OnLButtonUp(UINT flags, const CPoint& point);
- virtual void OnMButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnMButtonDown(UINT flags, const CPoint& point);
- virtual void OnMButtonUp(UINT flags, const CPoint& point);
- virtual LRESULT OnMouseActivate(HWND window, UINT hittest_code, UINT message);
- virtual void OnMouseMove(UINT flags, const CPoint& point);
- virtual LRESULT OnMouseLeave(UINT message, WPARAM w_param, LPARAM l_param);
- virtual LRESULT OnMouseWheel(UINT message, WPARAM w_param, LPARAM l_param);
- virtual void OnMove(const CPoint& point) { SetMsgHandled(FALSE); }
- virtual void OnMoving(UINT param, const LPRECT new_bounds) { }
- virtual LRESULT OnMouseRange(UINT msg, WPARAM w_param, LPARAM l_param);
- virtual LRESULT OnNCActivate(BOOL active) { SetMsgHandled(FALSE); return 0; }
- virtual LRESULT OnNCCalcSize(BOOL w_param, LPARAM l_param) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual LRESULT OnNCHitTest(const CPoint& pt) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnNCLButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnNCLButtonDown(UINT flags, const CPoint& point);
- virtual void OnNCLButtonUp(UINT flags, const CPoint& point);
- virtual void OnNCMButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnNCMButtonDown(UINT flags, const CPoint& point);
- virtual void OnNCMButtonUp(UINT flags, const CPoint& point);
- virtual LRESULT OnNCMouseLeave(UINT uMsg, WPARAM w_param, LPARAM l_param);
- virtual LRESULT OnNCMouseMove(UINT flags, const CPoint& point);
- virtual void OnNCPaint(HRGN rgn) { SetMsgHandled(FALSE); }
- virtual void OnNCRButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnNCRButtonDown(UINT flags, const CPoint& point);
- virtual void OnNCRButtonUp(UINT flags, const CPoint& point);
- virtual LRESULT OnNCUAHDrawCaption(UINT msg,
- WPARAM w_param,
- LPARAM l_param) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual LRESULT OnNCUAHDrawFrame(UINT msg, WPARAM w_param, LPARAM l_param) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual LRESULT OnNotify(int w_param, NMHDR* l_param);
- virtual void OnPaint(HDC dc);
- virtual LRESULT OnPowerBroadcast(DWORD power_event, DWORD data) {
- base::SystemMonitor* monitor = base::SystemMonitor::Get();
- if (monitor)
- monitor->ProcessWmPowerBroadcastMessage(power_event);
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnRButtonDblClk(UINT flags, const CPoint& point);
- virtual void OnRButtonDown(UINT flags, const CPoint& point);
- virtual void OnRButtonUp(UINT flags, const CPoint& point);
- virtual LRESULT OnReflectedMessage(UINT msg, WPARAM w_param, LPARAM l_param) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual LRESULT OnSetCursor(HWND window, UINT hittest_code, UINT message) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnSetFocus(HWND focused_window) {
- SetMsgHandled(FALSE);
- }
- virtual LRESULT OnSetIcon(UINT size_type, HICON new_icon) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual LRESULT OnSetText(const wchar_t* text) {
- SetMsgHandled(FALSE);
- return 0;
- }
- virtual void OnSettingChange(UINT flags, const wchar_t* section) {
- SetMsgHandled(FALSE);
- }
- virtual void OnSize(UINT param, const CSize& size);
- virtual void OnSysCommand(UINT notification_code, CPoint click) { }
- virtual void OnThemeChanged();
- virtual void OnVScroll(int scroll_type, short position, HWND scrollbar) {
- SetMsgHandled(FALSE);
- }
- virtual void OnWindowPosChanging(WINDOWPOS* window_pos) {
- SetMsgHandled(FALSE);
- }
- virtual void OnWindowPosChanged(WINDOWPOS* window_pos) {
- SetMsgHandled(FALSE);
- }
-
- // deletes this window as it is destroyed, override to provide different
- // behavior.
- virtual void OnFinalMessage(HWND window);
-
- // Start tracking all mouse events so that this window gets sent mouse leave
- // messages too. |is_nonclient| is true when we should track WM_NCMOUSELEAVE
- // messages instead of WM_MOUSELEAVE ones.
- void TrackMouseEvents(DWORD mouse_tracking_flags);
-
- // Actually handle mouse events. These functions are called by subclasses who
- // override the message handlers above to do the actual real work of handling
- // the event in the View system.
- bool ProcessMousePressed(const CPoint& point,
- UINT flags,
- bool dbl_click,
- bool non_client);
- void ProcessMouseDragged(const CPoint& point, UINT flags);
- void ProcessMouseReleased(const CPoint& point, UINT flags);
- void ProcessMouseMoved(const CPoint& point, UINT flags, bool is_nonclient);
- void ProcessMouseExited();
-
- // Handles re-laying out content in response to a window size change.
- virtual void ChangeSize(UINT size_param, const CSize& size);
-
- // Returns whether capture should be released on mouse release. The default
- // is true.
- virtual bool ReleaseCaptureOnMouseReleased() { return true; }
-
- enum FrameAction {FA_NONE = 0, FA_RESIZING, FA_MOVING, FA_FORWARDING};
-
- virtual RootView* CreateRootView();
-
- // Returns true if this WidgetWin is opaque.
- bool opaque() const { return opaque_; }
-
- // The root of the View hierarchy attached to this window.
- scoped_ptr<RootView> root_view_;
-
- // Current frame ui action
- FrameAction current_action_;
-
- // Whether or not we have capture the mouse.
- bool has_capture_;
-
- // If true, the mouse is currently down.
- bool is_mouse_down_;
-
- scoped_ptr<TooltipManager> tooltip_manager_;
-
- // Are a subclass of WindowWin?
- bool is_window_;
-
- private:
- // Implementation of GetWindow. Ascends the parents of |hwnd| returning the
- // first ancestor that is a Window.
- static Window* GetWindowImpl(HWND hwnd);
-
- // Resize the bitmap used to contain the contents of the layered window. This
- // recreates the entire bitmap.
- void SizeContents(const CRect& window_rect);
-
- // Paint into a DIB and then update the layered window with its contents.
- void PaintLayeredWindow();
-
- // In layered mode, update the layered window. |dib_dc| represents a handle
- // to a device context that contains the contents of the window.
- void UpdateWindowFromContents(HDC dib_dc);
-
- // Invoked from WM_DESTROY. Does appropriate cleanup and invokes OnDestroy
- // so that subclasses can do any cleanup they need to.
- void OnDestroyImpl();
-
- // The windows procedure used by all WidgetWins.
- static LRESULT CALLBACK WndProc(HWND window,
- UINT message,
- WPARAM w_param,
- LPARAM l_param);
-
- // Gets the window class name to use when creating the corresponding HWND.
- // If necessary, this registers the window class.
- std::wstring GetWindowClassName();
-
- // The following factory is used for calls to close the WidgetWin
- // instance.
- ScopedRunnableMethodFactory<WidgetWin> close_widget_factory_;
-
- // The flags currently being used with TrackMouseEvent to track mouse
- // messages. 0 if there is no active tracking. The value of this member is
- // used when tracking is canceled.
- DWORD active_mouse_tracking_flags_;
-
- bool opaque_;
-
- // Window Styles used when creating the window.
- DWORD window_style_;
-
- // Window Extended Styles used when creating the window.
- DWORD window_ex_style_;
-
- // Style of the class to use.
- UINT class_style_;
-
- // Should we keep an offscreen buffer? This is initially true and if the
- // window has WS_EX_LAYERED then it remains true. You can set this to false
- // at any time to ditch the buffer, and similarly set back to true to force
- // creation of the buffer.
- //
- // NOTE: this is intended to be used with a layered window (a window with an
- // extended window style of WS_EX_LAYERED). If you are using a layered window
- // and NOT changing the layered alpha or anything else, then leave this value
- // alone. OTOH if you are invoking SetLayeredWindowAttributes then you'll
- // must likely want to set this to false, or after changing the alpha toggle
- // the extended style bit to false than back to true. See MSDN for more
- // details.
- bool use_layered_buffer_;
-
- // The default alpha to be applied to the layered window.
- BYTE layered_alpha_;
-
- // A canvas that contains the window contents in the case of a layered
- // window.
- scoped_ptr<ChromeCanvas> contents_;
-
- // Whether or not the window should delete itself when it is destroyed.
- // Set this to false via its setter for stack allocated instances.
- bool delete_on_destroy_;
-
- // True if we are allowed to update the layered window from the DIB backing
- // store if necessary.
- bool can_update_layered_window_;
-
- // The following are used to detect duplicate mouse move events and not
- // deliver them. Displaying a window may result in the system generating
- // duplicate move events even though the mouse hasn't moved.
-
- // If true, the last event was a mouse move event.
- bool last_mouse_event_was_move_;
-
- // Coordinates of the last mouse move event, in screen coordinates.
- int last_mouse_move_x_;
- int last_mouse_move_y_;
-
- // Instance of accessibility information and handling for MSAA root
- CComPtr<IAccessible> accessibility_root_;
-
- // Our hwnd.
- HWND hwnd_;
-};
-
-} // namespace views
-
-#endif // #ifndef CHROME_VIEWS_WIDGET_WIDGET_WIN_H_