[vlc-devel] commit: skins2(Windows): add a black windows for fullscreen and manage z-order (Erwan Tulou )
git version control
git at videolan.org
Sat Dec 26 23:23:18 CET 2009
vlc | branch: master | Erwan Tulou <erwan10 at videolan.org> | Sun Dec 20 10:00:35 2009 +0100| [d147daa23d0205c2e3ea283f738453d1e0a4f97c] | committer: Erwan Tulou
skins2(Windows): add a black windows for fullscreen and manage z-order
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d147daa23d0205c2e3ea283f738453d1e0a4f97c
---
modules/gui/skins2/win32/win32_factory.cpp | 30 +++++++++++++++++++++++++++-
modules/gui/skins2/win32/win32_factory.hpp | 1 +
modules/gui/skins2/win32/win32_window.cpp | 24 ++++++++++++++++++---
3 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/modules/gui/skins2/win32/win32_factory.cpp b/modules/gui/skins2/win32/win32_factory.cpp
index 0a1cba5..3618886 100644
--- a/modules/gui/skins2/win32/win32_factory.cpp
+++ b/modules/gui/skins2/win32/win32_factory.cpp
@@ -129,7 +129,7 @@ bool Win32Factory::init()
skinWindowClass.cbClsExtra = 0;
skinWindowClass.cbWndExtra = 0;
skinWindowClass.hbrBackground = NULL;
- skinWindowClass.hCursor = LoadCursor( NULL , IDC_ARROW );
+ skinWindowClass.hCursor = LoadCursor( NULL, IDC_ARROW );
skinWindowClass.hIcon = LoadIcon( m_hInst, _T("VLC_ICON") );
skinWindowClass.hInstance = m_hInst;
@@ -147,6 +147,34 @@ bool Win32Factory::init()
}
}
+
+ // Create window class for window of VoutWindow type
+ WNDCLASS voutWindowClass;
+ voutWindowClass.style = CS_OWNDC|CS_DBLCLKS;
+ voutWindowClass.lpfnWndProc = (WNDPROC) Win32Proc;
+ voutWindowClass.lpszClassName = _T("VoutWindowClass");
+ voutWindowClass.lpszMenuName = NULL;
+ voutWindowClass.cbClsExtra = 0;
+ voutWindowClass.cbWndExtra = 0;
+ voutWindowClass.hbrBackground = (HBRUSH__*) GetStockObject( BLACK_BRUSH);
+ voutWindowClass.hCursor = LoadCursor( NULL , IDC_ARROW );
+ voutWindowClass.hIcon = LoadIcon( m_hInst, _T("VLC_ICON") );
+ voutWindowClass.hInstance = m_hInst;
+
+ // Register class and check it
+ if( !RegisterClass( &voutWindowClass ) )
+ {
+ WNDCLASS wndclass;
+
+ // Check why it failed. If it's because the class already exists
+ // then fine, otherwise return with an error.
+ if( !GetClassInfo( m_hInst, _T("VoutWindowClass"), &wndclass ) )
+ {
+ msg_Err( getIntf(), "cannot register voutWindow window class" );
+ return false;
+ }
+ }
+
// Create Window
m_hParentWindow = CreateWindowEx( WS_EX_TOOLWINDOW, _T("SkinWindowClass"),
_T("VLC media player"), WS_SYSMENU|WS_POPUP,
diff --git a/modules/gui/skins2/win32/win32_factory.hpp b/modules/gui/skins2/win32/win32_factory.hpp
index 9e4db90..93c688a 100644
--- a/modules/gui/skins2/win32/win32_factory.hpp
+++ b/modules/gui/skins2/win32/win32_factory.hpp
@@ -31,6 +31,7 @@
#include <windows.h>
#include <shellapi.h>
+// #include <wingdi.h>
#include "../src/os_factory.hpp"
#include "../src/generic_window.hpp"
diff --git a/modules/gui/skins2/win32/win32_window.cpp b/modules/gui/skins2/win32/win32_window.cpp
index 413168d..b94ad9f 100644
--- a/modules/gui/skins2/win32/win32_window.cpp
+++ b/modules/gui/skins2/win32/win32_window.cpp
@@ -52,19 +52,30 @@ Win32Window::Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow,
m_pParent( pParentWindow ), m_type ( type )
{
// Create the window
- if( pParentWindow )
+ if( type == GenericWindow::VoutWindow )
{
// Child window (for vout)
m_hWnd_parent = pParentWindow->getHandle();
m_hWnd = CreateWindowEx( WS_EX_TOOLWINDOW | WS_EX_NOPARENTNOTIFY,
- "SkinWindowClass", "default name", WS_CHILD,
+ "VoutWindowClass", "default name",
+ WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
m_hWnd_parent, 0, hInst, NULL );
}
+ else if( type == GenericWindow::FullscreenWindow )
+ {
+ // Normal window
+ m_hWnd_parent = NULL;
+ m_hWnd = CreateWindowEx( WS_EX_APPWINDOW, "SkinWindowClass",
+ "default name", WS_POPUP | WS_CLIPCHILDREN,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, m_hWnd_parent, 0, hInst, NULL );
+ }
+
else
{
// Normal window
- m_hWnd_parent = hParentWindow;
+ m_hWnd_parent = NULL;
m_hWnd = CreateWindowEx( WS_EX_TOOLWINDOW, "SkinWindowClass",
"default name", WS_POPUP | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT,
@@ -121,7 +132,12 @@ void Win32Window::reparent( void* OSHandle, int x, int y, int w, int h )
void Win32Window::show() const
{
- ShowWindow( m_hWnd, SW_SHOW );
+
+ if( m_type == GenericWindow::VoutWindow )
+ SetWindowPos( m_hWnd, HWND_BOTTOM, 0, 0, 0, 0,
+ SWP_NOMOVE | SWP_NOSIZE );
+
+ ShowWindow( m_hWnd, SW_SHOW );
}
More information about the vlc-devel
mailing list