Jump to content

[Aide] DirectShow : Vidéo dans le programme


Recommended Posts

Bonjour,

 

J'ai commencé à utiliser DirectShow (module vidéo de directx), mais un détail très important que je voudrais corriger apparait : mon programme ouvre une autre fenêtre et lis la vidéo dedans. Moi je souhaite que la vidéo se lise EN FOND du programme initial.

 

Nous sommes dans le contexte d'une page de login pour un jeu, codé en C++. J'aimerais faire comme le login de league of legends, un fond animé (une vidéo dans mon cas).

 

Voici mon code actuel :

void ....
{
[AUTRE CODE]
//Système video-login
	IGraphBuilder* pGraph; 
	IMediaControl* pMediaControl; 
	IMediaEvent *pEvent; 

	CoInitialize(NULL); 

	// Create the filter graph manager and query for interfaces. 
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
	pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
	pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); 

	// Build the graph. 
	pGraph->RenderFile(L"C:\\test.avi", NULL); 
	pMediaControl->Run(); 
	long evCode;
	pEvent->WaitForCompletion(INFINITE, &evCode); // Wait for completion. 

	// Clean up.
    pMediaControl->Release();
    pGraph->Release();
    CoUninitialize();
}

Mais voila ma vidéo se lance bien mais dans une fenêtre à part...

 

J'aimerais savoir si quelqu'un sait comment utiliser le fond de la fenêtre principale au lieu d'en créer une nouvelle.

 

Merci d'avance et bonne soirée !

 

Cordialement,

Karles

Link to post
Share on other sites

Peut-être que cette classe ou une des fonctions nécessite de passer le handle ou l'instance de ta fenêtre principal pour se lancer là dessus au lieu d'en créer une autre.(Simple supposition)

 

Sinon, je jetterai un coup d'oeil à DirectShow en arrivant chez moi.

Link to post
Share on other sites

D'après ton code (je ne connait pas cette lib, mais le nom des fonctions est équivoque) tu as l'air de lui demander de re-créer une fenêtre. Renvois un peu ton code et la doc, il doit y avoir un moyen de lancer le tout dans une fenêtre.

Link to post
Share on other sites

D'après ton code (je ne connait pas cette lib, mais le nom des fonctions est équivoque) tu as l'air de lui demander de re-créer une fenêtre. Renvois un peu ton code et la doc, il doit y avoir un moyen de lancer le tout dans une fenêtre.

Link to post
Share on other sites

Merci pour vos réponses.

 

Mais si je poste c'est que je n'y arrive pas vraiment. J'ai lu des vieux cours, des doc etc.. j'ai pas vraiment trouvé concernant l'intégration dans le programme, puis j'ai fait des dizaines d'essais j'ai du recompiler 20x mini avec plusieurs combi différentes.

Link to post
Share on other sites

Selon ce que j'ai lu sur MSDN, le deuxième paramètre de CoCreateInstance spécifie si l'instance va faire partie d'un ensemble ou non (Null = seul autre > Pointeur vers l'object de l'ensemble dont on veut le rattacher).

 

 

 

pUnkOuter [in]

If NULL, indicates that the object is not being created as part of an aggregate. If non-NULL, pointer to the aggregate object's IUnknown interface (the controlling IUnknown).

 

 

C'est ce que je crois, j’interprète peut-être mal. ._.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...