Hola a todos:
Antes de nada, como depende de cada version de FWH/Harbour comento que estoy usando las siguientes versiones:
FWH/FWHX 8.12
HARBOUR 1.0.1 Rev 9361
BORLAND C++ 5.5.1
El problema es el siguiente:
Estoy añadiendo un modulo a un programa para almacenar una tabla de temas multimedia, y no logro que funcione perfectamente el iniciar un VIDEO ( AVI/MPG ) cuando se activa un Dialog. He probado tanto con TVIDEO de FW como la clase modificada por TheFull, pero nada, no hay forma.
En el codigo fuente que abajo adjunto, con la clase TVIDEO modificada por TheFull, en algunas veces arranca el video bien al inicar el dialogo, pero en las siguientes llamadas a la funcion, hay que mover el dialogo para que se pueda ver, sino mueves la ventana se oye pero no se ve.
He intentado tambien poner en ON INIT el metodo Move() para mover la ventana y incluso Move() para el objeto oVideo, pero unas veces funciona y otras NO. SINO MUEVES LA VENTANA, NADA.
Le ha pasado a alguien este caso?
Existe alguna forma de saber si un archivo se ha cargado ya en el control? de esta manera podria probar en añadir Move() al cargar el recurso a ver si asi funciona bien.
En este ejemplo tambien hay un BUG, cuando pulsan la tecla ESC y muestra el mensaje para saber si quieren salir del Dialogo, el video ya no se ve otra vez, a no se que hagas click sobre el objeto TVIDEO para ponerlo a pantalla completa, pero apartir de aqui, dentro del recuerso no se ve.
Este es el ejemplo:
Si alguien lo prueba, hay que compilar con la clase TVIDEO de Rafa carmona ( Thefull ).
/*------------------------------------------------------------------------------*/
Function VideosB( cFile, cTitle )
/*------------------------------------------------------------------------------*/
LOCAL oDlg, oVideo
DEFINE DIALOG oDlg TITLE cTitle FROM 1,1 TO 300,580 PIXEL
oDlg:lHelpIcon := .F.
@ -10, -10 VIDEO oVideo FILE cFile;
SIZE oDlg:nBottom, oDlg:nRight OF oDlg ADJUST
oVideo:bRClicKed := { || NIL }
oVideo:bLClicKed := { || oVideo:Stop(),;
oVideo:FullScreen(.T.),;
oVideo:Play() }
ACTIVATE DIALOG oDlg;
ON INIT ( oVideo:oMci := TMci():New( "MPEGVideo!", cFile, oVideo ),;
oVideo:oMci:lOpen( cFile,,oVideo ),;
oVideo:Play() ,;
oVideo:SetFocus(),;
oDlg:Center() );
VALID ( Salir( oDlg, oVideo ) )
oVideo:End()
DeleteObject( oVideo )
Return NIL
/*------------------------------------------------------------------------------*/
STATIC Function Salir( oDlg, oVideo )
/*------------------------------------------------------------------------------*/
If MsgYesNo( "¿ Desea cancelar la Reproducción ?",;
OemToAnsi( "Confirmar" ) )
Return( .T. )
End
Un saludo y gracias de antemano:
JLL
http://www.proyectos-meliana.es