[vlc-devel] Re: VLC AX opens new framed desktop window instead of playing inside the host application's window

Jan Bölsche jan at muskelfisch.com
Tue Dec 20 13:59:11 CET 2005


Thanks for your reply, Damien!

In IE the control works fine and in-place. I guess the Zinc container 
just does not call the method onActivateInPlace(), which sets the 
private variable you mentioned.
I figured out that the Container implementation used by Zinc is probably 
Borlands TOleContainer (at least the WNDCLASS name of the container 
window is TOleContainer as Spy++ indicates) If this is the case, the 
problem probably occurs in a wider range of applications, those build 
with C++ Builder or Delphi.
Borland claims that TOleContainer supports in-place activation (at least 
in this irc session: 
http://community.borland.com.redirect.keljob.com:8080/article/1,1410,20091,00.html) 
but this is subject to furhter investigation.

Does anyone know about an ActiveX Control that analyzes the Container it 
is embedded in? Would be helpful.

I guess I just have to find a place for this code

/* set internal video width and height */
    vlc_value_t val;
    val.i_int = posRect.right-posRect.left;
    VLC_VariableSet(_i_vlc, "conf::width", val);
    val.i_int = posRect.bottom-posRect.top;
    VLC_VariableSet(_i_vlc, "conf::height", val);

    /* set internal video parent window */
    /* horrible cast there */
    val.i_int = reinterpret_cast<int>(_videownd);
    VLC_VariableSet(_i_vlc, "drawable", val);

in some of the other methods (probably one of IOleControl) that get's 
called by
TOleContainer at initialization time.

jan

Damien Fouilleul wrote:

>The parent window is inherited through a private variable
>called 'drawable', which is set by the activex control on
>activation; and it is possible that the control does not get
>properly activated by Zinc, because it may not support
>windowed activex controls as most of them are typically
>windowless. 
>Just to rule out other possiblities, have you tried using the
>activex control directly on internet explorer, you can use the
>following test page.
>
>http://trac.videolan.org/vlc/file/trunk/activex/test.html
>
>if you also get a framed window, then I would suggest that you
>reset your preferences, and try again.
>There might be some settings which may be conflicting,
>although I know of none, which would cause this effect.
>
>  
>
>>yes, the cone logo is displayed at the position where the AX
>>    
>>
>COntrol is 
>  
>
>>supposed to be: inside the App's Control Container Window
>>    
>>
>(class 
>  
>
>>TOLEContainer). But right before playback starts, another
>>    
>>
>window (class 
>  
>
>>VLC DirectX) with parent=NULL is created and inside that, a
>>    
>>
>child window 
>  
>
>>(VLC DirectX video) that actually contains the overlay surface.
>>
>>I'm now looking at modules/video_output/directx/events.c,
>>    
>>
>where these 
>  
>
>>windows are created.
>>
>>Especially at these lines:
>>
>>/* If an external window was specified, we'll draw in it. */
>>    p_vout->p_sys->hparent =
>>        vout_RequestWindow( p_vout, &p_vout->p_sys->i_window_x,
>>                            &p_vout->p_sys->i_window_y,
>>                            &p_vout->p_sys->i_window_width,
>>                            &p_vout->p_sys->i_window_height );
>>
>>So, i guess, if that TOleContainer window's handle would be in 
>>p_vout->p_sys->hparent ,
>>everything would be fine. But how would it get there?
>>
>>Damien Fouilleul wrote:
>>
>>    
>>
>>>do you see the cone logo when you are running your code ?
>>>
>>>Jan B�lsche wrote:
>>>
>>>      
>>>
>>>>Hi! I'm new to this list and VLC development in general
>>>>        
>>>>
>and run into 
>  
>
>>>>the following problem:
>>>>
>>>>When embedded into Zinc
>>>>        
>>>>
>(http://www.multidmedia.com/software/zinc), 
>  
>
>>>>the VLC ActiveX control opens a new, framed desktop
>>>>        
>>>>
>window with title 
>  
>
>>>>bar and everything right before starting playback of a
>>>>        
>>>>
>video stream.
>  
>
>>>>The window is of class "VLC DirectX video" and has the
>>>>        
>>>>
>title "VLC 
>  
>
>>>>(hardware YUV overlay DirectX output)"
>>>>
>>>>I guess this is because the Zinc COM Container is
>>>>        
>>>>
>somehow, let's say, 
>  
>
>>>>not the best on earth and doesn't suport in-place
>>>>        
>>>>
>activation. But I 
>  
>
>>>>don't have hard facts about this yet.
>>>>
>>>>Just wanted to ask, if somebody has some ideas about this
>>>>        
>>>>
>before 
>  
>
>>>>diving deeper into VLC sources.
>>>>
>>>>Thanks!
>>>> Jan
>>>>
>>>>Subversion daemon wrote:
>>>>
>>>>        
>>>>
>>>>>r13809 | massiot | 2005-12-19 17:46:48 +0100 (Mon, 19
>>>>>          
>>>>>
>Dec 2005) | 3 
>  
>
>>>>>lines
>>>>>Changed paths:
>>>>>  M /trunk/src/input/es_out.c
>>>>>  M /trunk/src/input/var.c
>>>>>  M /trunk/src/libvlc.h
>>>>>
>>>>>* src/input/es_out.c: New --no-spu and --no-sout-spu
>>>>>          
>>>>>
>options to disable
>  
>
>>>>>  processing of SPU elementary streams.
>>>>>
>>>>> 
>>>>>
>>>>>          
>>>>>
>>-- 
>>This is the vlc-devel mailing-list, see
>>    
>>
>http://www.videolan.org/vlc/
>  
>
>>To unsubscribe, please read
>>    
>>
>http://developers.videolan.org/lists.html
>  
>
>>    
>>
>
>Accédez au courrier électronique de La Poste : www.laposte.net ;
>Jusqu'au 25 décembre, participez  au grand jeu du Calendrier de l'Avent et
> gagnez tous les jours de nombreux lots, + de 300 cadeaux en jeu !
>
>
>
>  
>

-- 
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html



More information about the vlc-devel mailing list