1 /***************************************************************************** 2 * win32_window.hpp 3 ***************************************************************************** 4 * Copyright (C) 2003 the VideoLAN team 5 * $Id: 55de6043df4fc36ee7796d1b8893de9ff95bf8d1 $ 6 * 7 * Authors: Cyril Deguet <asmax@via.ecp.fr> 8 * Olivier Teulière <ipkiss@via.ecp.fr> 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License along 21 * with this program; if not, write to the Free Software Foundation, Inc., 22 * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. 23 *****************************************************************************/ 24 25 #ifndef WIN32_WINDOW_HPP 26 #define WIN32_WINDOW_HPP 27 28 #include "../src/generic_window.hpp" 29 #include "../src/os_window.hpp" 30 #include <windows.h> 31 #include <ole2.h> // LPDROPTARGET 32 33 34 /// Win32 implementation of OSWindow 35 class Win32Window: public OSWindow 36 { 37 public: 38 Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow, 39 HINSTANCE hInst, HWND hParentWindow, 40 bool dragDrop, bool playOnDrop, 41 Win32Window *pParentWindow, GenericWindow::WindowType_t ); 42 virtual ~Win32Window(); 43 44 // Show the window 45 virtual void show() const; 46 47 // Hide the window 48 virtual void hide() const; 49 50 /// Move and resize the window 51 virtual void moveResize( int left, int top, int width, int height ) const; 52 53 /// Bring the window on top 54 virtual void raise() const; 55 56 /// Set the opacity of the window (0 = transparent, 255 = opaque) 57 virtual void setOpacity( uint8_t value ) const; 58 59 /// Toggle the window on top 60 virtual void toggleOnTop( bool onTop ) const; 61 62 /// Getter for the window handle getHandle() const63 HWND getHandle() const { return m_hWnd; } 64 65 /// Getter for the window handle getOSHandle() const66 void* getOSHandle() const { return (void*) m_hWnd; } 67 68 /// reparent the window 69 void reparent( void* OSHandle, int x, int y, int w, int h ); 70 71 /// invalidate a window surface 72 bool invalidateRect( int x, int y, int w, int h ) const; 73 74 private: 75 /// Window handle 76 HWND m_hWnd; 77 /// Window parent's handle 78 HWND m_hWnd_parent; 79 /// Indicates whether the window handles drag&drop events 80 bool m_dragDrop; 81 /// Drop target 82 LPDROPTARGET m_pDropTarget; 83 /// Indicates whether the window is layered 84 mutable bool m_isLayered; 85 /// Parent window 86 Win32Window *m_pParent; 87 /// window type 88 GenericWindow::WindowType_t m_type; 89 90 }; 91 92 93 #endif 94