DirectShow Problem C

Diskutiere DirectShow Problem C im Developer Network Forum im Bereich Hardware & Software Forum; Hi, habe folgendes Problem. Ich erstelle ein Fenster mit WINAPI in C und möchte da rein nun ein Videofenster machen indem das Video abgespielt...
  • DirectShow Problem C Beitrag #1
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Hi, habe folgendes Problem.
Ich erstelle ein Fenster mit WINAPI in C und möchte da rein nun ein Videofenster machen indem das Video abgespielt wird, als quasie integriert im Anwendungsfenster.
Wenn ich ein Video normalerweise öffne dann wird es ja in einem eigenen Fenster geöffnet, deswegen habe ich mir im Platform SDK mal "Using Windowed Mode" durchgelesen und den Code mit dem aus dem Artikel "How To Play a File" übernommen.
Ich hab den dann folgendermaßen angeordnet unter der WM_CREATE - Message:
Code:
hr = CoInitialize(NULL);

	hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
	
	pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
    pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
	pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);
	
	pVidWin->put_Owner((OAHWND)hWnd);
	pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
    pVidWin->SetWindowPosition(0, 0, 200, 200);

	
    hr = pGraph->RenderFile(L"Test.avi", NULL);
    if (SUCCEEDED(hr))
    {
        hr = pControl->Run();   
    }
Leider öffnet sich sobald ich das Programm starte das eigentliche Fenster, und dazu ein extra Video Fenster indem Test.avi abgespielt wird.
Kann mir wer sagen, was da falsch ist?

MfG
Anno1989
 
  • DirectShow Problem C Beitrag #2
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Sieh dir mal den Artikel "Using Windowless Mode" an.
put_Owner stellt nur ein, dass das Video-Fenster zu deinem Fenster gehört, aber nicht, dass das Video direkt in deinem Fenster abgespielt werden soll.
 
  • DirectShow Problem C Beitrag #3
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Okay, habe nun ein neues Problem:
Habe in einem Edit den Dateinamen, der geöffnet werden soll, aber RenderFile akzeptiert kein char, und auch wenn ich den ersten Parameter von Render File mit (LPCWSTR) vor dem Arraynamen versehe, kann es nicht abgespielt werden.

static char cAFilename[100];
[...]
RenderFile( (LPCWSTR) cAFilename, NULL);

Was kann ich da tun?
 
  • DirectShow Problem C Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Okay, habe nun ein neues Problem:
Habe in einem Edit den Dateinamen, der geöffnet werden soll, aber RenderFile akzeptiert kein char, und auch wenn ich den ersten Parameter von Render File mit (LPCWSTR) vor dem Arraynamen versehe, kann es nicht abgespielt werden.

static char cAFilename[100];
[...]
RenderFile( (LPCWSTR) cAFilename, NULL);

Was kann ich da tun?
Den richtigen Typ nehmen ;-)
LPCWSTR ist ein Zeiger auf einen WSTR. Also Unicode. Entweder Du stellst Dein Programm komplett auf Unicode um, oder wandelst Deine Strings nach Unicode (siehe MultiByteToWideChar(...)). Strings im Source werden dann so geschrieben:
L"string" oder _T("string"). Die zweite Variante funktioniert mit normalen Strings und mit Unicode-Strings.
 
  • DirectShow Problem C Beitrag #5
Anno1989

Anno1989

Bekanntes Mitglied
Dabei seit
30.04.2006
Beiträge
1.293
Reaktionspunkte
0
Ort
NRW
Das L"string" oder _T("String") Funktioniert ja nicht bei Variablen und die MultiByteToWideChar Funktion hat mir viel zu viele Parameter, da steige ich grade nicht durch, welche ich da brauche. Kann mir wer kurz die Funktion MultiByteToWideChar mit den entsprechenden Sachen für Umwandlung von char array in diese LPCWSTR posten?
 
Thema:

DirectShow Problem C

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben