inicio características api download svn licencia contactar
English  
 

Cómo reproducir múltiples videos en mi propia ventana

Este ejemplo muestra como puedes reproducir múltiples videos en tu propia ventana.

(sin el VideoCore Player)

 
 

Ejemplo utilizando la clase implementación

#include <windows.h>
// Incluimos el archivo de cabecera principal, que contiene
// la clase implementacion.

#include <ceVideoCoreImpl.h>
#include <cstdio> // Por printf.

// Utilizamos el namespace "ce" (CorEngine) por defecto (Opcional).
using namespace ce;

// Creamos nuestra propia clase manager, heredando la clase implementacion.
class CVideoManager : public IVideoManagerImpl<CVideoManager>
{
public:

inline void Example(void) const
{
// Contiene la informacion del video.
SVideoInfo VideoInfo;
unsigned int videoID;

// Carga un archivo de video.
videoID = this -> Video -> LoadVideoFile("video1.mpg",
CE_VIDEO_NOPLAYBAR | CE_VIDEO_NOMENU | CE_VIDEO_AUTOPLAY);

// Recupera la informacion del video.
VideoInfo = this -> Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
20, 20, 220, 140, SWP_SHOWWINDOW);

videoID = this -> Video -> LoadVideoFile("video1.mpg");

VideoInfo = this -> Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
260, 20, 220, 140, SWP_SHOWWINDOW);

videoID = this -> Video -> LoadVideoFile("video1.mpg", CE_VIDEO_AUTOPLAY);

VideoInfo = this -> Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
20, 180, 220, 140, SWP_SHOWWINDOW);

videoID = this -> Video -> LoadVideoFile("video1.mpg",
CE_VIDEO_NOPLAYBAR | CE_VIDEO_NOMENU | CE_VIDEO_AUTOPLAY);

VideoInfo = this -> Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
260, 180, 220, 140, SWP_SHOWWINDOW);
};

// Operador -> (Opcional).
const CVideoManager* operator -> (void) const
{ return this; };

};

::LRESULT CALLBACK WindowProcedure(::HWND, ::UINT, ::WPARAM, ::LPARAM);

int main(int argc, char **argv)
{
// --- Creamos una ventana ---

::WNDCLASSEX wincl;
::ZeroMemory(&wincl, sizeof(::WNDCLASSEX));

wincl.cbSize = sizeof(::WNDCLASSEX);
wincl.hInstance = ::GetModuleHandle(NULL);
wincl.lpszClassName = "VideoCoreExample";
wincl.hbrBackground = (::HBRUSH) COLOR_BACKGROUND;
wincl.lpfnWndProc = WindowProcedure;

if (!::RegisterClassEx(&wincl)) return 1;

::HWND hWnd = ::CreateWindowEx(0, wincl.lpszClassName, "VideoCore Example",
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT, 512, 384,
HWND_DESKTOP, NULL, wincl.hInstance, NULL);

if (hWnd == NULL)
{ ::UnregisterClass(wincl.lpszClassName, wincl.hInstance); return 1; }

// --- VideoCore ---

// Creamos una instancia de nuestra clase manager.

const CVideoManager Video;

// Verificamos la integridad de la clase manager (Opcional).
if (Video -> VerifyVideoManager() == 0)
{ ::UnregisterClass(wincl.lpszClassName, wincl.hInstance); return 1; }

// This method registers a window for subsequent use in calls
// to the CreateVideoWindow() method.

Video -> RegisterVideoWindow(wincl.hInstance, hWnd);

Video -> Example();

// --- Bucle principal ---

::MSG msg;

::ShowWindow(hWnd, SW_SHOWDEFAULT);

while (!::GetMessage(&msg, NULL, 0, 0) < 1)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

// Liberamos todos los videos (Opcional).
Video -> ReleaseAllVideos();

::UnregisterClass(wincl.lpszClassName, wincl.hInstance);

return 0;
}

::LRESULT CALLBACK
WindowProcedure(::HWND hWnd, ::UINT message, ::WPARAM wParam, ::LPARAM lParam)
{
switch (message)
{
case WM_DESTROY: ::PostQuitMessage(0); break;
default: return ::DefWindowProc(hWnd, message, wParam, lParam);
} return 0;
}
 

Ejemplo utilizando la clase interfaz

#include <windows.h>
// Incluimos el archivo de cabecera principal, que contiene la clase interfaz.
#include <ceVideoCore.h>
#include <cstdio> // Por printf.

// Utilizamos el namespace "ce" (CorEngine) por defecto (Opcional).
using namespace ce;

::LRESULT CALLBACK WindowProcedure(::HWND, ::UINT, ::WPARAM, ::LPARAM);

int main(int argc, char **argv)
{
// --- Creamos una ventana ---

::WNDCLASSEX wincl;
::ZeroMemory(&wincl, sizeof(::WNDCLASSEX));

wincl.cbSize = sizeof(::WNDCLASSEX);
wincl.hInstance = ::GetModuleHandle(NULL);
wincl.lpszClassName = "VideoCoreExample";
wincl.hbrBackground = (::HBRUSH) COLOR_BACKGROUND;
wincl.lpfnWndProc = WindowProcedure;

if (!::RegisterClassEx(&wincl)) return 1;

::HWND hWnd = ::CreateWindowEx(0, wincl.lpszClassName, "VideoCore Example",
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT, 512, 384,
HWND_DESKTOP, NULL, wincl.hInstance, NULL);

if (hWnd == NULL)
{ ::UnregisterClass(wincl.lpszClassName, wincl.hInstance); return 1; }

// --- VideoCore ---

// Creamos una instancia de la clase manager.

IVideoManager *Video = CreateVideoManager();
if (Video == NULL)
{ ::UnregisterClass(wincl.lpszClassName, wincl.hInstance); return 1; }

// This method registers a window for subsequent use in calls
// to the CreateVideoWindow() method.

Video -> RegisterVideoWindow(wincl.hInstance, hWnd);

// Contiene la informacion del video.
SVideoInfo VideoInfo;
unsigned int videoID;

// Carga un archivo de video.
videoID = Video -> LoadVideoFile("video1.mpg", CE_VIDEO_NOPLAYBAR |
CE_VIDEO_NOMENU |
CE_VIDEO_AUTOPLAY);

// Recupera la informacion del video.
VideoInfo = Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
20, 20, 220, 140, SWP_SHOWWINDOW);

videoID = Video -> LoadVideoFile("video1.mpg");

VideoInfo = Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
260, 20, 220, 140, SWP_SHOWWINDOW);

videoID = Video -> LoadVideoFile("video1.mpg", CE_VIDEO_AUTOPLAY);

VideoInfo = Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
20, 180, 220, 140, SWP_SHOWWINDOW);

videoID = Video -> LoadVideoFile("video1.mpg", CE_VIDEO_NOPLAYBAR |
CE_VIDEO_NOMENU |
CE_VIDEO_AUTOPLAY);

VideoInfo = Video -> GetVideoInfo(videoID);

::SetWindowPos(VideoInfo.hVideo, HWND_TOP,
260, 180, 220, 140, SWP_SHOWWINDOW);

// --- Bucle principal ---

::MSG msg;

::ShowWindow(hWnd, SW_SHOWDEFAULT);

while (!::GetMessage(&msg, NULL, 0, 0) < 1)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

// Liberamos todos los videos (Opcional).
Video -> ReleaseAllVideos();

// Liberamos la instancia de la clase manager.
DestroyVideoManager(&Video);

::UnregisterClass(wincl.lpszClassName, wincl.hInstance);

return 0;
}

::LRESULT CALLBACK
WindowProcedure(::HWND hWnd, ::UINT message, ::WPARAM wParam, ::LPARAM lParam)
{
switch (message)
{
case WM_DESTROY: ::PostQuitMessage(0); break;
default: return ::DefWindowProc(hWnd, message, wParam, lParam);
} return 0;
}
 
 
 SourceForge.net
 
   Creative Commons License   Salvo que se indique lo contrario, el contenido de este sitio
  está bajo una licencia Creative Commons Attribution 3.0 License