Rodar Vídeo

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Rodar Vídeo

Mensagem por Vander »

Salve amigos;

Alguém sabe como rodar Vídeo (mpg, avi, etc) diretamente do sistema sem a utilização de programas externos ?


Valeu
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Voce ira precisar de um arquivo .AVI, tipo CLOCK.AVI e um arquivo .GIF tipo TEST.GIF.

Use isto:

Codigo HMEDIA.PRG:

Código: Selecionar todos

/*
 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
 **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
 */
#include "hmedia.ch"

function TestMedia()
   LOCAL ODLG
   LOCAL O_AVI
   LOCAL O_GIF,KEY, oWnd
   PUBLIC cFile := "",mida_TMP:={},N_mero:=1
   *****************************************
   DEFINE DIALOG oDlg RESOURCE "TEST" 
   REDEFINE HMEDIA O_AVI  ID 3 OF oDlg RESOURCE  "TEST_1" MEDIA "AVI" ACTION MSGINFO("VIEW AVI FROM RES ") ;
      ON RIGHT CLICK MSGINFO("RIGHT CLICK ON AVI ")
    REDEFINE HMEDIA O_GIF  ID 4 OF oDlg FILE  "TEST.GIF" MEDIA "GIF" ACTION  MSGINFO("VIEW GIF FROM  FILE ");
      ON RIGHT CLICK MSGINFO("RIGHT CLICK ON GIF ")
      ***************************************************
    REDEFINE BUTTON   ID 2 OF oDlg ACTION (oDlg:END())
      ****************
      ACTIVATE DIALOG oDlg CENTERED ON INIT (O_AVI:STARTMDEIA(),O_GIF:STARTMDEIA())
  O_AVI:end() 
  O_GIF:end()
  *************
  return
Arquivo HMEDIA.CH

Código: Selecionar todos

#include "FiveWin.ch"
#include "Constant.ch"
#include "Inkey.ch"
#define COLOR_WINDOWTEXT     8
#define COLOR_BTNFACE       15
#define MM_MCINOTIFY    953 //    0x3B9   /* MCI */
#define MM_MCISIGNAL    971 //    0x3CB
#define BUF_SIZE  200
//    HMedia  CLASS by hathal
//****************************************************************************//
CLASS HMedia FROM TControl
   CLASSDATA nNumero INIT 0
   CLASSDATA   play  INIT 1
   DATA   nX, nY, nOldX, nOldY
   DATA   HMedia, hPalette
   DATA   cMediaFile, cResName
   DATA   cType,cAlias
   DATA   cBuffer,extf
   METHOD  ReDefine( nId, cResName, cMediaFile , oWnd, bLClicked, bRClicked,;
                      oCursor, cMsg,;
                      bValid,action,extf ) CONSTRUCTOR   
   METHOD  Initiate( hDlg )  INLINE  Super:Initiate( hDlg )
   METHOD  HandleEvent( nMsg, nWParam, nLParam )
   METHOD  End()
   METHOD  xAlias()
   METHOD  ACTION(action)
   METHOD  STARTMDEIA() 
  ENDCLASS
//****************************************************************************//
   METHOD ReDefine( nId, cResName, cMediaFile , oWnd, bLClicked, bRClicked,;
                    cMsg, bValid,action,extf ) CLASS HMedia
   LOCAL FILE:="MPEGVideo!"
    DEFAULT  oWnd := GetWndDefault()
      if cResName<>NIL
       ::cResName:=cResName
ELSE
      ::cResName:=NIL
//    FILE =FILE+ALLTRIM(extf)
    ENDIF
    IF cMediaFile<>NIL
    FILE=FILE+alltrim(cMediaFile)
     ENDIF
      **********************
      ::extf:=alltrim(extf)
   ::play:=1
   ::nId       = nId
   ::nX        = 0
   ::nY        = 0
   ::nOldX     = 0
   ::nOldY     = 0
   ::lCaptured = .f.
   ::lDrag     = .f.
   ::bLClicked = bLClicked
    ::bRClicked = bRClicked
    ::oWnd      = oWnd
    ::bValid    = bValid
    ::cMsg      = cMsg
       ::Register( nOR( CS_VREDRAW, CS_HREDRAW ) )
   if oWnd != nil
      oWnd:DefControl( Self )
   endif
    ::SetColor( GetSysColor( COLOR_WINDOWTEXT ), GetSysColor( COLOR_BTNFACE ) )
     ::cType:=FILE
     ::cAlias := ::xAlias()
     ::HMedia:=oWnd
     ::bLClicked  :={|| ::ACTION(action) }
      ::bRClicked  :={|| ::ACTION(bRClicked)}
//      ::cMsg  :={|| TONE(567,2),msginfo(cMsg)}
        return Self
 //****************************************************************************//
METHOD  ACTION(action)
       if Action != nil
         Eval( Action, Self )
      endif
   return Self   
*********************************************************
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS HMedia
*********************************************************
static nPosition := 0
         
    DO CASE

       CASE nMsg == WM_SIZE
          ::Refresh() ;   return 0
               
      CASE nMsg == WM_MOUSEMOVE  .OR. nMsg == WM_LBUTTONUP .OR. nMsg == WM_RBUTTONUP

          CursorHand();   return 0
            
      CASE nMsg == WM_LBUTTONDOWN
           CursorHand()
           // Not return 0 Super:Evalua method bLclicked ;)

      CASE nMsg == WM_RBUTTONDOWN
           CursorHand()
           // Not return 0

      CASE nMsg == MM_MCINOTIFY  // Control notify. realmente funciona ;)
           if nWParam == MCI_NOTIFY_FAILURE
              *? nWParam
           endif
          return 0

      CASE nMsg == MM_MCISIGNAL  // Control de Señal. No VIENE!!!!! ;(
           *? nLParam
           Eval( ::bSignal, nLParam )
           return 0
      ENDCASE
***********************************
   Return  Super:HandleEvent( nMsg, nWParam, nLParam )
**************
METHOD STARTMDEIA()  CLASS HMedia
LOCAL IN_HND:=NIL
       if ::cResName<>NIL
       if ::extf="avi" .or. ::extf="AVI"
         IN_HND:=InitAnimate(;
         ::hWnd;
        ,1,1,INT(::nWidth/1.003),INT(::nHeight/1.003) ,.T.,.T.,.T.)
        openanimate ( IN_HND ,::cResName )
        playanimate ( IN_HND )
        else
        // new command
        endif
ELSE
    mciSendStr("CLOSE VIDEO",,::oWnd:hWnd)
    mciSendStr("OPEN "+::CTYPE+" ALIAS "+::cAlias+" PARENT "+Alltrim(str(::hWnd)),,::oWnd:hWnd)
    MCISendStr("WINDOW "+::cAlias+" HANDLE "+Alltrim(str(::hWnd)),,"LOPEN Window")
    mciSendStr("put "+::cAlias+" destination at 1 1 "+;
                 alltrim(str(INT(::nWidth/1.003) )) + " " +;
                 alltrim(str(INT(::nHeight/1.003) )))
*****************
        mciSendStr("PLAY "+::cAlias+" FROM 0"+"PLAY From",,::oWnd:hWnd)
        mciSendStr("PLAY "+::cAlias+" REPEAT",,"REPEAT" )
        ENDIF
      return Self
******************
 ********************************  
METHOD  END()
LOCAL FILE:=strtran(::CTYPE,"MPEGVideo!","")
  MCISendStr("CLOSE "+::cAlias,, "END " )
      IF AT(".TEMP",FILE)<>0
  IF FILE(alltrim(FILE))=.T.
            ERASE(alltrim(FILE))
 ENDIF
 ENDIF
return Self
 ***********************
METHOD xAlias() CLASS HMedia
   Local xAlias := ::cType
     ::nNumero++
RETURN ( xAlias += StrZero(::nNumero,3 ) )
*************************************
 //****************************************************************************//
*************************************
#pragma BEGINDUMP
#define _WIN32_IE      0x0500
#include <windows.h>
#include <mmsystem.h>
#include "hbapi.h"
#include <commctrl.h>
  HB_FUNC ( INITANIMATE )
{
	HWND hwnd;
        int Style = WS_VISIBLE | WS_CHILD ; // | WS_BORDER;

	if (  hb_parl (6) )
		Style = Style | ACS_AUTOPLAY ;
	if (  hb_parl (7) )
		Style = Style | ACS_CENTER ;
	if (  hb_parl (8) )
		Style = Style | ACS_TRANSPARENT ;
         hwnd=Animate_Create((HWND)hb_parnl(1),NULL,Style,GetModuleHandle(NULL));
//      hwnd=Animate_Create(GetActiveWindow(),NULL,Style,GetModuleHandle(NULL));

         if(hwnd == NULL)
	{
	MessageBox(0, "AnimateBox Creation Failed!", "Error!",
	MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
	return;
	}
         MoveWindow(hwnd,hb_parnl(2),hb_parnl(3),hb_parnl(4),hb_parnl(5),TRUE);
	hb_retnl ((LONG)hwnd);
}
HB_FUNC ( OPENANIMATE )
{
  Animate_Open((HWND) hb_parnl(1),hb_parc(2));
}

HB_FUNC ( PLAYANIMATE )
{
  Animate_Play((HWND) hb_parnl(1),0,-1,1);
}

HB_FUNC ( SEEKANIMATE )
{
  Animate_Seek((HWND) hb_parnl(1),hb_parni(2));
}
HB_FUNC ( STOPANIMATE )
{
  Animate_Stop((HWND) hb_parnl(1));
}

HB_FUNC ( CLOSEANIMATE )
{
  Animate_Close((HWND) hb_parnl(1));
}

HB_FUNC ( DESTROYANIMATE )
{
  DestroyWindow((HWND) hb_parnl(1));
}
//*************************
   #pragma ENDDUMP
Arquivo HMEDIA.RC

Código: Selecionar todos

test DIALOG 73, 10, 164, 145
STYLE DS_LOCALEDIT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME
CAPTION "TEST RESOURE"
FONT 8, "MS Sans Serif"
{
 CONTROL "", 3, "HMedia", 0 | WS_CHILD | WS_VISIBLE, 9, 31, 70, 73
 CONTROL "", 4, "HMedia", 0 | WS_CHILD | WS_VISIBLE, 89, 30, 71, 75
 CTEXT "PLAY GIF FROM FILE", -1, 96, 3, 58, 25
 CTEXT "PLAY VIDEO [ AVI ] FROM   RESOURE ON EXE", -1, 11, 3, 60, 25
 PUSHBUTTON "EXIT", 2, 48, 120, 76, 21
}
TEST_1  AVI "clock.AVI"
@braços :?)
Responder