case VOUT_CLOSE:
ShowWindow( p_vout->p_sys->hwnd, SW_HIDE );
case VOUT_REPARENT:
- /* Change window style, borders and title bar */
- vlc_mutex_lock( &p_vout->p_sys->lock );
- p_vout->p_sys->hparent = 0;
- vlc_mutex_unlock( &p_vout->p_sys->lock );
-
/* Retrieve the window position */
point.x = point.y = 0;
ClientToScreen( p_vout->p_sys->hwnd, &point );
- int d = 0;
+ HWND d = 0;
- if( i_query == VOUT_REPARENT ) d = va_arg( args, int );
+ if( i_query == VOUT_REPARENT ) d = (HWND)va_arg( args, int );
if( !d )
{
+ vlc_mutex_lock( &p_vout->p_sys->lock );
+ p_vout->p_sys->hparent = 0;
+ vlc_mutex_unlock( &p_vout->p_sys->lock );
SetParent( p_vout->p_sys->hwnd, 0 );
p_vout->p_sys->i_window_style =
WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
+ SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
+ p_vout->p_sys->i_window_style |
+ (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
+ SetWindowLong( p_vout->p_sys->hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW );
+ SetWindowPos( p_vout->p_sys->hwnd, 0, point.x, point.y, 0, 0,
+ SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED );
}
else
{
+ vlc_mutex_lock( &p_vout->p_sys->lock );
+ p_vout->p_sys->hparent = d;
+ vlc_mutex_unlock( &p_vout->p_sys->lock );
+
SetParent( p_vout->p_sys->hwnd, d );
p_vout->p_sys->i_window_style = WS_CLIPCHILDREN;
+ SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
+ p_vout->p_sys->i_window_style |
+ (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
+ SetWindowLong( p_vout->p_sys->hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW );
+
+ /* Retrieve the parent size */
+ RECT rect;
+ GetClientRect( d, &rect );
+ SetWindowPos( p_vout->p_sys->hwnd, d, point.x, point.y, rect.right, rect.bottom,
+ SWP_FRAMECHANGED );
}
- SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
- p_vout->p_sys->i_window_style |
- (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
- SetWindowLong( p_vout->p_sys->hwnd, GWL_EXSTYLE, WS_EX_APPWINDOW );
- SetWindowPos( p_vout->p_sys->hwnd, 0, point.x, point.y, 0, 0,
- SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED );
return vout_vaControlDefault( p_vout, i_query, args );