Clipper On Line • Ver Tópico - Rodar Vídeo

Rodar Vídeo

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

Moderador: Moderadores

 

Rodar Vídeo

Mensagempor Vander » 16 Jan 2006 21:24

Salve amigos;

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


Valeu
Avatar de usuário

Vander
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 212
Data de registro: 23 Jul 2004 01:43
Cidade/Estado: João Monlevade - MG
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Mensagempor rochinha » 16 Jan 2006 23:20

Amiguinho

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

Use isto:

Codigo HMEDIA.PRG:
/*
**** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
**** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
*/
#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
#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
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 :?)
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro