begin process at 2012 05 27 20:20:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > LECTEUR DE CLIPS VIDÉO

LECTEUR DE CLIPS VIDÉO


 Information sur la source

Note :
9,86 / 10 - par 7 personnes
9,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :lecteur, video, wmp, activex Niveau :Débutant Date de création :07/08/2005 Date de mise à jour :11/08/2005 04:20:53 Vu / téléchargé :23 381 / 2 204

Auteur : racpp

Ecrire un message privé
Commentaire sur cette source (37)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici le code source d'un lecteur de clips vidéo utilisant l'Activex "Windows Media Player". Il permet d'afficher un clip vidéo dans la fenêtre de notre programme. Il est réduit au strict minimum (ouvrir, lire, pause et arrêter). Vous pouvez le perfectionner en utilisant les autres interfaces de cet activex (voir MSDN). Projet réalisé sous Visual 6. En cas de problème avec les autres compilateurs, n'hésiter pas à le signaler car on peut rendre le code tout à fait portable après quelques petites modifications.
Testé sous Windows XP avec Windows Media Player 8, 9 et 10.

Source

  • #include <windows.h>
  • #ifndef EXTERN_GUID
  • #define EXTERN_GUID(g,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) // Pour Dev-C++
  • #endif
  • #include "wmpdef.h"
  • #include "wmp.h"
  • // Variables globales:
  • IWMPControls *pMPControls;
  • IWMPPlayer *pMPPlayer;
  • HWND hConteneur;
  • //------------------- Procédure de notre fenêtre principale -----------------------//
  • LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
  • {
  • // Déclaration des variables:
  • static HWND hOuvrir,hLire,hArret,hPause, hQuitter,hCadre;
  • // Interception et traitement des messages:
  • switch(messg)
  • {
  • case WM_CREATE:
  • {
  • // Créer tous les controles:
  • hOuvrir=CreateWindow("BUTTON","Ouvrir",WS_CHILD | WS_VISIBLE,20,428,90,20,hWnd,0,0,0);
  • hLire=CreateWindow("BUTTON","Lire",WS_CHILD | WS_VISIBLE,170,428,90,20,hWnd,0,0,0);
  • hPause=CreateWindow("BUTTON","Pause",WS_CHILD | WS_VISIBLE,270,428,90,20,hWnd,0,0,0);
  • hArret=CreateWindow("BUTTON","Arrêter",WS_CHILD | WS_VISIBLE,370,428,90,20,hWnd,0,0,0);
  • hQuitter=CreateWindow("BUTTON","Quitter",WS_CHILD | WS_VISIBLE,520,428,90,20,hWnd,0,0,0);
  • hCadre=CreateWindow("BUTTON","",BS_GROUPBOX | WS_CHILD | WS_VISIBLE,15,415,600,37,hWnd,0,0,0);
  • break;
  • }
  • case WM_COMMAND:
  • if( (HWND)lParam == hOuvrir)
  • {
  • // Déclarer et intialiser un buffer:
  • char tampon[MAX_PATH];
  • tampon[0]=0;
  • // Déclarer une structure OPENFILENAME:
  • OPENFILENAME ofn;
  • // Mettre tous les membres de la structure à 0:
  • memset( &ofn, 0, sizeof(OPENFILENAME) );
  • // Définir les membres:
  • ofn.lStructSize = sizeof(OPENFILENAME);
  • ofn.hwndOwner = hWnd;
  • ofn.lpstrFilter = "Clips Vidéo\0*.avi;*.mpg;*.mpeg;*.wmv\0\0";
  • ofn.lpstrFile = tampon;
  • ofn.nMaxFile = MAX_PATH;
  • ofn.lpstrTitle = "Choisir un clip :";
  • ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
  • // Lancer la boite de dialogue pour choisir un fichier:
  • if(!GetOpenFileName(&ofn)) break;
  • // Convertir le chemin en UNICODE:
  • WCHAR fichier[MAX_PATH];
  • MultiByteToWideChar (CP_ACP, 0, tampon, -1, fichier, MAX_PATH+1);
  • pMPPlayer->put_URL(fichier);
  • break;
  • }
  • // Clic sur le bouton "Lire":
  • if((HWND)lParam == hLire)
  • {
  • pMPControls->play();
  • break;
  • }
  • // Clic sur le bouton "Pause":
  • if((HWND)lParam == hPause)
  • {
  • pMPControls->pause();
  • break;
  • }
  • // Clic sur le bouton "Arrêter":
  • if((HWND)lParam == hArret)
  • {
  • pMPControls->stop();
  • break;
  • }
  • // Clic sur le bouton "Quitter":
  • if((HWND)lParam == hQuitter)
  • {
  • // Envoi du message WM_CLOSE à notre fenêtre:
  • SendMessage(hWnd,WM_CLOSE,0,0);
  • }
  • break;
  • case WM_CLOSE:
  • // Envoi du message de fermeture du programme:
  • PostQuitMessage(0);
  • break;
  • default:
  • //Retour à la procédure par défaut:
  • return( DefWindowProc( hWnd, messg, wParam, lParam ) );
  • }
  • return 0;
  • }
  • //---------------------------------------------------------------------------------//
  • //------------------------------ Fonction WinMain -----------------------------------------//
  • int WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow )
  • {
  • // Définir type de pointeur pour la fonction AtlAxAttachControl:
  • typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
  • // Charger la atl.dll:
  • HINSTANCE hDLL = LoadLibrary("atl.dll");
  • // Si dll non chargée alors quitter:
  • if (!hDLL) return 1;
  • // Obtenir pointeur sur la fonction AtlAxAttachControl:
  • PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDLL, "AtlAxAttachControl");
  • // Déclarer notre classe de fenêtre et définir ses membres:
  • WNDCLASS wc;
  • char NomClasse[] = "Lecteur_Clips";
  • wc.lpszClassName = NomClasse;
  • wc.hInstance = hInst;
  • wc.lpfnWndProc = WndProc;
  • wc.hCursor = LoadCursor( 0, IDC_ARROW );
  • wc.hIcon = LoadIcon( 0, IDI_APPLICATION );
  • wc.lpszMenuName = 0;
  • wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
  • wc.style = 0;
  • wc.cbClsExtra = 0;
  • wc.cbWndExtra = 0;
  • // Enregistrer la classe de notre fenêtre:
  • if (!RegisterClass(&wc)) return 1;
  • // Obtenir la hauteur de la barre de titre:
  • int barre=GetSystemMetrics(SM_CYCAPTION);
  • // Créer notre fenêtre principale:
  • HWND hWnd = CreateWindow( NomClasse," Lecteur de clips vidéo",WS_SYSMENU | WS_MINIMIZEBOX ,0,0,640,460+barre, 0, 0, hInst,0);
  • // Montrer la fenêtre:
  • ShowWindow(hWnd, nCmdShow );
  • UpdateWindow( hWnd );
  • // Créer notre STATIC conteneur:
  • hConteneur=CreateWindow("STATIC","",WS_CHILD ,0,0,638,420,hWnd,0,0,0);
  • // Initialiser la librairie COM:
  • CoInitialize(0);
  • // Créer une instance du composant WindowsMediaPlayer et l'interface IWMPPlayer:
  • HRESULT res=CoCreateInstance(CLSID_WindowsMediaPlayer,0,CLSCTX_ALL,IID_IWMPPlayer,(void**)&pMPPlayer);
  • // Si échec alors quitter le programme:
  • if(res) return 1;
  • // Attacher l'interface IWMPCore à notre conteneur:
  • res =AtlAxAttachControl(pMPPlayer,hConteneur,NULL);
  • // Obtenir un pointeur sur l'interface IWMPControls:
  • res=pMPPlayer->get_controls(&pMPControls);
  • // Choisir l'affichage sans boutons etc...:
  • char mode[5]={"none"};
  • WCHAR wmode[5];
  • MultiByteToWideChar (CP_ACP, 0, mode, -1, wmode, 6);
  • res=pMPPlayer->put_uiMode(wmode);
  • // Afficher le conteneur:
  • ShowWindow(hConteneur,1);
  • // Boucle des messages:
  • MSG Msg;
  • while( GetMessage(&Msg, 0, 0, 0))
  • {
  • TranslateMessage( &Msg );
  • DispatchMessage( &Msg );
  • }
  • // Libérer toutes les interfaces;
  • pMPControls->Release();
  • pMPPlayer->Release();
  • // Détruire la fenêtre:
  • DestroyWindow(hWnd);
  • // Fermer la librairie COM:
  • CoUninitialize();
  • // Libérer la DLL:
  • FreeLibrary(hDLL);
  • // Quitter le programme:
  • return( Msg.wParam);
  • }
#include <windows.h>

#ifndef EXTERN_GUID
#define EXTERN_GUID(g,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) // Pour Dev-C++
#endif

#include "wmpdef.h"
#include "wmp.h"

// Variables globales:
IWMPControls *pMPControls;
IWMPPlayer   *pMPPlayer;
HWND         hConteneur;

//------------------- Procédure de notre fenêtre principale -----------------------//
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
{	
	// Déclaration des variables:
	static HWND hOuvrir,hLire,hArret,hPause, hQuitter,hCadre;

	// Interception et traitement des messages:
	switch(messg)
	{
		case WM_CREATE:
			{
			// Créer tous les controles:
			hOuvrir=CreateWindow("BUTTON","Ouvrir",WS_CHILD | WS_VISIBLE,20,428,90,20,hWnd,0,0,0);
			hLire=CreateWindow("BUTTON","Lire",WS_CHILD | WS_VISIBLE,170,428,90,20,hWnd,0,0,0);
			hPause=CreateWindow("BUTTON","Pause",WS_CHILD | WS_VISIBLE,270,428,90,20,hWnd,0,0,0);
			hArret=CreateWindow("BUTTON","Arrêter",WS_CHILD | WS_VISIBLE,370,428,90,20,hWnd,0,0,0);
			hQuitter=CreateWindow("BUTTON","Quitter",WS_CHILD | WS_VISIBLE,520,428,90,20,hWnd,0,0,0);			
			hCadre=CreateWindow("BUTTON","",BS_GROUPBOX | WS_CHILD | WS_VISIBLE,15,415,600,37,hWnd,0,0,0);
			break;
			}

		case WM_COMMAND:
			if( (HWND)lParam ==  hOuvrir)
			{
				// Déclarer et intialiser un buffer:
				char tampon[MAX_PATH];
				tampon[0]=0;
				// Déclarer une structure OPENFILENAME:
				OPENFILENAME ofn;
                // Mettre tous les membres de la structure à 0:
                memset( &ofn, 0, sizeof(OPENFILENAME) );
                // Définir les membres:
                ofn.lStructSize = sizeof(OPENFILENAME);
				ofn.hwndOwner = hWnd;
                ofn.lpstrFilter = "Clips Vidéo\0*.avi;*.mpg;*.mpeg;*.wmv\0\0";
                ofn.lpstrFile = tampon;
                ofn.nMaxFile = MAX_PATH;
                ofn.lpstrTitle = "Choisir un clip :";
                ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
                // Lancer la boite de dialogue pour choisir un fichier:
                if(!GetOpenFileName(&ofn)) break;				
				// Convertir le chemin en UNICODE:
				WCHAR fichier[MAX_PATH];
				MultiByteToWideChar (CP_ACP, 0, tampon, -1, fichier, MAX_PATH+1);
				pMPPlayer->put_URL(fichier);
				break;
			}
			
			// Clic sur le bouton "Lire":
			if((HWND)lParam ==  hLire)
			{				
				pMPControls->play();	
				break;
			}
			// Clic sur le bouton "Pause":
			if((HWND)lParam ==  hPause)
			{
				pMPControls->pause();
				break;
			}
			// Clic sur le bouton "Arrêter":
			if((HWND)lParam ==  hArret)
			{
				pMPControls->stop();	
				break;
			}
			// Clic sur le bouton "Quitter":
			if((HWND)lParam ==  hQuitter)
			{
				// Envoi du message WM_CLOSE à notre fenêtre:
				SendMessage(hWnd,WM_CLOSE,0,0);
			}
			break;

		case WM_CLOSE:
			// Envoi du message de fermeture du programme:
			PostQuitMessage(0);
			break;
	
		default:
			//Retour à la procédure par défaut:
			return( DefWindowProc( hWnd, messg, wParam, lParam ) );
	}
	return 0;
}
//---------------------------------------------------------------------------------//

//------------------------------ Fonction WinMain -----------------------------------------//
int WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow )
{
	// Définir type de pointeur pour la fonction AtlAxAttachControl:
	typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
	// Charger la atl.dll:
	HINSTANCE hDLL = LoadLibrary("atl.dll");
	// Si dll non chargée alors quitter:
	if (!hDLL) return 1;
	// Obtenir pointeur sur la fonction AtlAxAttachControl:
	PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDLL, "AtlAxAttachControl");
	// Déclarer notre classe de fenêtre et définir ses membres:
	WNDCLASS wc;
	char NomClasse[]    = "Lecteur_Clips";
	wc.lpszClassName 	= NomClasse;
	wc.hInstance 		= hInst;
	wc.lpfnWndProc		= WndProc;
	wc.hCursor			= LoadCursor( 0, IDC_ARROW );
	wc.hIcon			= LoadIcon( 0, IDI_APPLICATION );
	wc.lpszMenuName	    = 0;
	wc.hbrBackground	= GetSysColorBrush(COLOR_BTNFACE);
	wc.style			= 0;
	wc.cbClsExtra		= 0;
	wc.cbWndExtra		= 0;
	// Enregistrer la classe de notre fenêtre:
	if (!RegisterClass(&wc)) return 1;
	// Obtenir la hauteur de la barre de titre:
	int barre=GetSystemMetrics(SM_CYCAPTION);
	// Créer notre fenêtre principale:
	HWND hWnd = CreateWindow( NomClasse," Lecteur de clips vidéo",WS_SYSMENU | WS_MINIMIZEBOX  ,0,0,640,460+barre, 0, 0, hInst,0);
	// Montrer la fenêtre:
	ShowWindow(hWnd, nCmdShow );
	UpdateWindow( hWnd );
	// Créer notre STATIC conteneur:
	hConteneur=CreateWindow("STATIC","",WS_CHILD  ,0,0,638,420,hWnd,0,0,0);
	// Initialiser la librairie COM:
	CoInitialize(0);
	// Créer une instance du composant WindowsMediaPlayer et l'interface IWMPPlayer:
	HRESULT res=CoCreateInstance(CLSID_WindowsMediaPlayer,0,CLSCTX_ALL,IID_IWMPPlayer,(void**)&pMPPlayer);
	// Si échec alors quitter le programme:
	if(res) return 1;
	// Attacher l'interface IWMPCore à notre conteneur:
	res =AtlAxAttachControl(pMPPlayer,hConteneur,NULL); 
	// Obtenir un pointeur sur l'interface IWMPControls:
	res=pMPPlayer->get_controls(&pMPControls);
	// Choisir l'affichage sans boutons etc...:
	char mode[5]={"none"};
	WCHAR wmode[5];
	MultiByteToWideChar (CP_ACP, 0, mode, -1, wmode, 6);
	res=pMPPlayer->put_uiMode(wmode);
	// Afficher le conteneur:
	ShowWindow(hConteneur,1);
	// Boucle des messages:
	MSG Msg;
	while( GetMessage(&Msg, 0, 0, 0))
	{
		TranslateMessage( &Msg );
		DispatchMessage( &Msg );
	}
	// Libérer toutes les interfaces;
	pMPControls->Release();	
	pMPPlayer->Release();
	// Détruire la fenêtre:
	DestroyWindow(hWnd);
	// Fermer la librairie COM:
	CoUninitialize();
	// Libérer la DLL:
	FreeLibrary(hDLL);
	// Quitter le programme:
	return( Msg.wParam);
}




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 août 2005 04:20:53 :
1- Ajout du fichier "wmpdef.h" contenant les GUIDs des interfaces pour éviter "__uuidof" 2- Amélioration dans le code afin qu'il puisse être compilé avec Dev-C++ aussi. 3- Ajout de la capture d'écran. 4- Testé sans problème avec Visual 6 et Dev-C++ 4.9.9.2

 Sources du même auteur

Source avec Zip Source avec une capture SOUS-CLASSEMENT DE FENÊTRE D'UN AUTRE PROCESS PAR INJECTION ...
Source avec Zip Source avec une capture FENÊTRE FLOTTANTE SANS FOCUS (WIN32 API)
Source avec Zip Source avec une capture SERVICE WINDOWS DANS UNE DLL LANCÉ PAR SVCHOST.EXE
Source avec Zip Source avec une capture IMPRESSION EN WIN32 API AVEC OPTIONS
Source avec Zip Source avec une capture INFOTIP SHELL EXTENSION (BULLE DE L'EXPLORATEUR WINDOWS) (WI...

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip LECTEUR MULTIMÉDIA par omegatou
Source avec Zip Source avec une capture [C/WIN32/WMI]SAVOIR SI UNE CLASSE COM EST INSTALLÉE par rt15
Source avec Zip Source avec une capture HMEDIAV2 LECTEUR (WIN32) par hattabking
Source avec Zip CLASSE CLECTEUR par bobbyantho
Source avec Zip Source avec une capture ~~ PETIT LECTEUR VIDEO [ WXWIDGETS ----> WXMEDIACTRL ] ~~ par satellite34

Commentaires et avis

Commentaire de seb2086 le 08/08/2005 10:52:08

Merci pour cette source Raccp.
Elle va m'être trés utile.
Bien commentée et pratique 10/10.

Commentaire de victorcoasne le 08/08/2005 11:40:15

Bonjour,
Très bonne source comme d'habitude mais cependant erreurs sous Dev :

In file included from MediaPlayer.cpp:3:
wmp.h:8646: error: expected constructor, destructor, or type conversion before '(' token

wmp.h:8646: error: expected `,' or `;' before '(' token

MediaPlayer.cpp: In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
MediaPlayer.cpp:135: error: expected primary-expression before ')' token
MediaPlayer.cpp:135: error: `__uuidof' undeclared (first use this function)
MediaPlayer.cpp:135: error: (Each undeclared identifier is reported only once for each function it appears in.)
MediaPlayer.cpp:135: error: expected primary-expression before ')' token

MediaPlayer.cpp:144: error: expected primary-expression before ')' token

Commentaire de racpp le 08/08/2005 14:36:18 administrateur CS

Salut,
Merci pour vos encouragements, ça fait plaisir.

victorcoasne >> Merci de m'avoir signalé ce problème avec Dev-C++. Je vais essayer de le régler le plus tôt possible.
Le fichier "wmp.h" est fourni par Microsoft dans son "Media Player 10 SDK". Il semble qu'il n'est pas compatible avec Dev-C++. Pour les autres erreurs c'est, "__uuidof" qui n'est pas reconnue. On peut la contourner. Je vais modifier un peu le code puis le mettre à jour. Je te tiendrai au courant.

Commentaire de racpp le 08/08/2005 18:45:12 administrateur CS

victorcoasne >> Dans "wmp.h" contient à la ligne signalée (8646) un identificateur qui n'est peut-être pas reconnu par Dev-C++. Il s'agit de EXTERN_GUID. Il suffit de le définir au début du programme comme ceci:

#include <windows.h>
#ifndef EXTERN_GUID
#define EXTERN_GUID(g,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8)
#endif
#include "wmp.h"

Teste ce petit truc et dis-moi si ça résoud le problème. Pour les autres erreurs, je vais les régler ensuite. Merci

Commentaire de victorcoasne le 08/08/2005 19:52:35

Bonjour,

J'ai essayé c'est bon il reste plus que le _uuidof :
MediaPlayer.cpp: In function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
MediaPlayer.cpp:138: error: expected primary-expression before ')' token
MediaPlayer.cpp:138: error: `__uuidof' undeclared (first use this function)
MediaPlayer.cpp:138: error: (Each undeclared identifier is reported only once for each function it appears in.)
MediaPlayer.cpp:138: error: expected primary-expression before ')' token
MediaPlayer.cpp:147: error: expected primary-expression before ')' token

Bonne prog

Commentaire de BruNews le 08/08/2005 20:26:15 administrateur CS

Fais toi un genre de struct comme ça et remplis pour chacun et tu passeras adresse à QueryInterface.

typedef struc MY_GUID_ {
  DWORD a;
  WORD  b;
  WORD  c;
  BYTE  d;
  BYTE  e;
  BYTE  f;
  BYTE  g;
  BYTE  h;
  BYTE  i;
  BYTE  j;
  BYTE  k;
} MY_GUID_;

Pour __uuidof(IWMPCore) tu remplis avec cette suite (en HEXA)
D0d84cca99, cce2, 11d2, 9e, cc, 0, 0, f8, 8, 59, 81

Pour __uuidof(WindowsMediaPlayer)
06bf52a52, 394a, 11d3, b1, 53, 0, c0, 4f, 79, fa, a6

Commentaire de BruNews le 08/08/2005 20:36:32 administrateur CS

J'oubliais de préciser mais c'est implicite, ça marche très bien, bon boulot.

Commentaire de racpp le 08/08/2005 20:42:09 administrateur CS

Ca marche avec ça:
const GUID WMP  ={0x6BF52A52,0x394A,0x11D3,{0xB1,0x53,0x00,0xC0,0x4F,0x79,0xFA,0xA6}};
const GUID IWMPC ={0xD84CCA99,0xCCE2,0x11D2,{0x9E,0xCC,0x00,0x00,0xF8,0x08,0x59,0x81}};
const GUID IWMPP ={0x6BF52A4F,0x394A,0x11D3,{0xB1,0x53,0x00,0xC0,0x4F,0x79,0xFA, 0xA6}};
CoCreateInstance(WMP,0,CLSCTX_ALL,IWMPC,(void**)&pMPCore);
//..........
pMPCore->QueryInterface(IWMPP,(void**)&pMPPlayer);

Commentaire de victorcoasne le 08/08/2005 20:49:35

Bonjour,
C'est bon ça marche nickel !
Merci quand même à BruNews (le roi de l'asm et de l'hexadécimal ;-)) pour sa recherche :
J'étais en train de suivre ses indications quand RACPP m'a donné la réponse.
Merci aussi à RACPP pour son excellent travail !
10/10 !

Bonne continuation

Commentaire de racpp le 08/08/2005 20:59:23 administrateur CS

Merci Brunews,
Je voulais éviter de définir les GUID des interfaces car ils le sont déjà dans "wmp.h". Normalement on devrait faire ceci:
CoCreateInstance(CLSID_WindowsMediaPlayer,0,CLSCTX_ALL,IID_IWMPCore,(void**)&pMPCore);
Ainsi, la compilation se passe sans problème mais à l'édition des liens j'ai ceci:
error LNK2001: unresolved external symbol _CLSID_WindowsMediaPlayer
error LNK2001: unresolved external symbol _IID_IWMPCore
T'as une idée BruNews?
Je rappelle que "wmp.h" est inclus "Windows Media Player 10 SDK".
Il s'agit peut-être d'un problème de compatibilité avec Visual 6.
Quelqu'un peut essayer avec une version plus récente svp?

Commentaire de BruNews le 08/08/2005 21:13:48 administrateur CS

sais pas faufrait voir mais sur VS il est d'usage d'employer __uuidof qui va chercher lui même le GUID dans le fichier d'interface du composant. Je l'employais deja sur VS6 pour ADO et ça passait impec. Le prob est pour les compilos non MS.

Commentaire de victorcoasne le 08/08/2005 21:16:42

Bonjour,

BruNews > Oui mais en même temps avec gcc on est proche du standard !

Bonne Prog
@++

Commentaire de BruNews le 08/08/2005 21:24:48 administrateur CS

oh tu sais moi et ses considérations...
Je connais seulement le client standard et il y a longtemps que j'ai compris où je devais bosser pour le satisfaire, tout le reste n'est que philo.

Commentaire de racpp le 08/08/2005 21:27:54 administrateur CS

J'ai toujours évité les MFC et ATL pour, en plus de la performance des API, pouvoir compiler avec tous les compilateurs. Je pense donc qu'il est aussi préférable d'éviter les trucs spécifiques à Microsoft comme "__uuidof" quand c'est possible.
A propos du problème du linkage, je vais examiner "wmp.h" pour essayer de trouver ce qui cloche.

Commentaire de BruNews le 08/08/2005 21:35:16 administrateur CS

oui ça peut aussi se comprendre, la preuve ce n'est pas dur de remplacer directement par un GUID fait main, mais bon ça prend du temps d'aller l'extraire et on s'habitue vite au confort des IDE prefectionnés.

Commentaire de racpp le 08/08/2005 21:51:30 administrateur CS

D'habitude, je n'ai jamais ce genre de problème quand les GUID sont définis dans un fichier *.h on passe directement les identificateurs aux fonctions et ça marche. Comme dans mon source de Navigateur Web. Tous les GUIDs sont dans "exdisp.h" et ça passe sans problème même avec Dev-C++ (d'après post de victorcoasne). L'avantage du fichier *.h est qu'il peut contenir un grand nombre de GUIDs. Imaginez la corvée si on veut définir manuellement les GUIDs de beaucoup d'interfaces.

Commentaire de BruNews le 08/08/2005 22:04:35 administrateur CS

Faudrait être maso pour faire s'il y en a trop.
Pour tout ce qui expose des interfaces COM, le pratique c'est aussi d'employer la directive #import et c'est VS qui crée illico un tlh et un tli dans lesquels il a extrait tout ce qui est dans ton h.

Commentaire de racpp le 08/08/2005 22:41:58 administrateur CS

J'ai souvent travaillé avec #import   mais ça ne suffit pas toujours. Dans ma source "Lecteur d'animations Flash" j'ai commencé par utiliser #import "....flash.ocx" mais le compilateur disait  qu'il manque des définitions. J'ai aussi appris que les types importés comportaient des erreurs. J'ai donc laissé tomber #import et puis j'ai créé un fichier "flash.h" à partir des données fournies par "OLE/COM Viewer". J'ai ensuite dû désinstaller Flash 7 de mon PC puis installer la version 5 pour corriger des erreurs de type. La démarche était longue mais très instructive => avec #import on peut importer des erreurs.

Commentaire de victorcoasne le 08/08/2005 22:45:38

Bonjour,

Chez moi le lecteur flash compile sous Dev-C++ mais ne veux pas lire les swf (même ton exemple) alors qu'avec ton navigateur compilé sous Dev-C++ ça marche.

Bonne Prog,

@++

Commentaire de racpp le 08/08/2005 23:04:36 administrateur CS

victorcoasne >> Je pense que je dois donc télécharger et installer  Dev-C++. Comme ça je ferai tous les tests avant de déposer un code source. Je dois aussi revoir et mettre à jour toutes mes sources. Merci beaucoup pour ton aide . :)

Commentaire de victorcoasne le 08/08/2005 23:08:40

Bonjour,
RACPP > C'était un plaisir de tester pour toi surtout avec de si excellentes sources (comme toutes les tiennes). Dev-C++ et gratuit donc pas de problème majeur de téléchargement.
Il suffit d'aller sur le site de l'éditeur (anglais).Le programme lui est bien en Français.
Si tu as des problèmes avec Dev-C++ tu peux me contacter.

Programmez bien
@++

Commentaire de racpp le 09/08/2005 00:21:56 administrateur CS

Merci beaucoup victoroasme. C'est très sympa de ta part.

Commentaire de satellite34 le 09/08/2005 02:13:47

Un screenShot peut etre??

merci.

Commentaire de racpp le 09/08/2005 13:46:34 administrateur CS

Bonjour,
satellite34 >> Le problème du screenshot c'est que la méthode pour le créer ne marche pas bien. Je fais ALT+ImprimEcran puis je colle dans Paint puis je convertis en jpg avec un autre outil. Le résultat n'est pas bon car soit le clip n'apparait pas soit il est décalé dans le cadre. Je vais essayer de régler ce problème pour ma prochaine mise à jour.

Commentaire de satellite34 le 09/08/2005 13:54:49

ok, c'est bien ce que je pensais, j'ai le meme probleme;

lol
si t'y arrive envoi moi les expliks

a+

Commentaire de victorcoasne le 09/08/2005 14:15:48

Bonjour,

Voilà un screen :
http://img163.imageshack.us/img163/7122/video7bx.png

PS : C'est une fois j'ai fait la météo en vidéo sur fond blanc et voilà le résultat mais là c'est le moment où je dis le temps donc j'y suis pas !

Bonne prog
@++

Commentaire de racpp le 09/08/2005 15:30:51 administrateur CS

Merci beaucoup victoroasne. Tu peux faire un autre screenshot où on peut sentir le mouvement? Genre danse par exemple. Merci.

Commentaire de victorcoasne le 09/08/2005 15:43:23

Bonjour,

Dsl mais je ne danse pas encore.

J'ai trouvé la vidéo fournie avec XP. J'ai pris la scène où il descends du tobogan.
En effet ça bouge et on peut même voir les pixels du déplacement !

http://img163.imageshack.us/img163/6685/video5vq.png

Bonne prog

@++

Commentaire de victorcoasne le 09/08/2005 15:55:59

Bonjour,

J'ai réalisé une vidéo exprès avec du mouvement chez moi:

http://img163.imageshack.us/img163/5597/video3yg.png

Bonne prog
PS : Tu peux la télécharger et la mettre en screen sur cppfrance si elle te convient

@++

Commentaire de racpp le 09/08/2005 16:18:27 administrateur CS

Merci beaucoup. Je prends celle du tobogan car la tienne est très sombre. Dis-nous comment tu fait pour bien réaliser ces screenshots?
Meric pour ta collaboration.

Commentaire de victorcoasne le 09/08/2005 16:30:00

Bonjour c'est très simple,

Je fais comme tu fais et à l'emplacement noir où devait être la vidéo, je colle une photo d'une scène de la vidéo à l'aide de paint.
La photo a été capturée depuis Windows Movie Maker.

Bonne prog,
@++

Commentaire de racpp le 09/08/2005 16:43:56 administrateur CS

Ok merci pour l'astuce  :)

Commentaire de lagw le 28/02/2006 12:01:05

comment peut on utiliser les evenements ? avec IWMPEvents ou _WMPOCXEvents ?
je ne vois pas comment on peut se servir de ces objets.
merci.

Commentaire de racpp le 01/03/2006 01:44:11 administrateur CS

Salut,
Dans le SDK de WMP10, tu trouveras un exemple "WMPHost" qui contient deux fichiers "CWMPEventDispatch.h" et "CWMPEventDispatch.cpp". Tu peux adapter ces deux fichiers pour pouvoir les utiliser sans ATL. Mon code source "Navigateur Web" utilise une classe implémentant l'interception des événements. Le principe est le même avec WMP.

Commentaire de lagw le 01/03/2006 15:16:43

merci ca marche.

il y a la fonction AtlAxAttachControl mais pas de Detach ?

Commentaire de racpp le 25/03/2006 03:39:36 administrateur CS

Salut,
Il suffit de libérer toutes les interfaces de l'activex utilisées par notre programme pour qu'il soit détaché de son conteneur. Il ne faut jamais détruire le conteneur avant, sinon crash.

Commentaire de omnia le 07/11/2007 18:38:57

SAlut, une petite question, l'interface affiché par défaut si on ne récupère pas le pointeur vers les boutons (pause, lecture, ..)

saurais-tu comment l'activer ? car les boutons restent figés --_--' juste a tout hazard, très bonne source :p

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lecteur MPEG streaming [ par matge ] Bonjour,Je realise un player qui enregistre un flux multicast RTP.Je stocke la video au format MPEG dans un fichier a l aide d un Thread.J aimerais re lecteur enregistreur video [ par blanccc ] Bonjour tout le monde,Je suis novice en C++ et je cherche le moyen de prendre un flux video en entr&#233;e provenant d'une camera numerique, de l'affi Video [ par Trappeu17 ] Bonjour,je suis actuellement en train de faire du chiffrage de vid&#233;os. Les personnes voulant regarder ces videos devront ajouter un plugin &#224; lecteur video [ par kain31 ] Bonjour tout le monde, Actuellement ,je developpe un lecteur video en C++. Ce lecteur devra etre capable de lire a la suite deux fichiers videos.Un pe recherche d'un code source d'un lecteur video [ par ingenioura ] Salut, je cherche un programme en utilisant la bibliothèque Qt pour afficher une séquence vidéo et merci inserer lecteur video sous builder c++ [ par fcolh ] FcolHbonsoir , j'aimerais savoir si c'est possible d'inclure un lecteure video sous builder c++.et si oui quelle est la meilleure solution et surtout Lecteur video basique [ par adess00 ] BonjourJ ai fait un algo de compression video et donc je voudrais maintenant coder un lecteur pour pouvoir faire des tests.Je voudrais donc savoir com jouer un mp3 avec lecteur par defaut ou autre... [ par fhoest ] Bonjour, je voudrais sans mettre Windows media player 11(wmp) dans une form jouer un son mp3 afin que si je poste mon ptit prog sur un autre pc qui ne activex et vbscript methode CreateObject [ par DevGizmo ] Bonsoir,Je me confronte a un petit probleme...Je fais un script vbs qui doit a un moment donne creer un objet active x et utiliser certaines de ses fo transformation sur video [ par simpat ] Bonjour,J'ai une vidéo qui tourne sur une surface directdraw et je voudrais lui ajouter un effet d'onde aquatique. Comme si on jetait une pierre au mi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,466 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales