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_GFX_WIN_HWND_UTIL_H_ 6#define UI_GFX_WIN_HWND_UTIL_H_ 7 8#include <windows.h> 9 10#include "base/strings/string16.h" 11#include "ui/gfx/gfx_export.h" 12 13namespace gfx { 14class Point; 15class Size; 16 17// A version of the GetClassNameW API that returns the class name in an 18// base::string16. An empty result indicates a failure to get the class name. 19GFX_EXPORT base::string16 GetClassName(HWND hwnd); 20 21// Useful for subclassing a HWND. Returns the previous window procedure. 22GFX_EXPORT WNDPROC SetWindowProc(HWND hwnd, WNDPROC wndproc); 23 24// Pointer-friendly wrappers around Get/SetWindowLong(..., GWLP_USERDATA, ...) 25// Returns the previously set value. 26GFX_EXPORT void* SetWindowUserData(HWND hwnd, void* user_data); 27GFX_EXPORT void* GetWindowUserData(HWND hwnd); 28 29// Returns true if the specified window is the current active top window or one 30// of its children. 31GFX_EXPORT bool DoesWindowBelongToActiveWindow(HWND window); 32 33// Sizes the window to have a window size of |pref|, then centers the window 34// over |parent|, ensuring the window fits on screen. 35GFX_EXPORT void CenterAndSizeWindow(HWND parent, 36 HWND window, 37 const gfx::Size& pref); 38 39// If |hwnd| is NULL logs various thing and CHECKs. Invoke right after calling 40// CreateWindow. 41GFX_EXPORT void CheckWindowCreated(HWND hwnd); 42 43// Shows |window|'s system menu (at a specified |point| in screen coordinates). 44GFX_EXPORT void ShowSystemMenu(HWND window); 45GFX_EXPORT void ShowSystemMenuAtPoint(HWND window, const gfx::Point& point); 46 47// Returns the window you can use to parent a top level window. 48// Note that in some cases we create child windows not parented to its final 49// container so in those cases you should pass true in |get_real_hwnd|. 50GFX_EXPORT HWND GetWindowToParentTo(bool get_real_hwnd); 51 52} // namespace gfx 53 54#endif // UI_GFX_WIN_HWND_UTIL_H_ 55