[C++ MFC] AVI-Wiedergabe

min

Grünschnabel
Hallo,

Ich will in einem Modalen Fenster eine AVI wiedergeben. Dafür habe ich einen CAnimatedCtrl eingefügt und in DoDataExchange folgendes reingeschrieben

Code:
	CAnimateCtrl    m_video;
	char cwd[MAX_PATH+1];
	_getcwd(cwd,MAX_PATH); 
	char s [230];
	char asd[50];
	_itoa_s ( (rand() % 2+1), asd, 10 );
	strcpy_s(s,cwd);
	strcat_s(s,"\\res\\");
	strcat_s(s,asd);
	strcat_s(s,".avi");

	CString  sat =_T("");
	sat.Format(_T("%s"),s);
	if (m_video.Open(sat))
		m_video.Play(0,-1,-1);

Eigentlich sollte nun aus dem Ordner "res" der bei der .EXE liegt entweder "1.avi" oder "2.avi". Leider funktioniert etwas bei "m_video_Open(sat)" nicht und ich bekomme beim Ausführen des Programms die Meldung

debug assertion failed
...
afxcmn.inl
Line: 619

Dort steht nun:

Code:
_AFXCMN_INLINE BOOL CAnimateCtrl::Open(LPCTSTR lpszName)
	{ ASSERT(::IsWindow(m_hWnd)); return (BOOL)::SendMessage(m_hWnd, ACM_OPEN,
		(WPARAM) ::AfxFindResourceHandle(lpszName, _T("AVI")), (LPARAM)lpszName); }

Könnte jemand mir vielleicht sagen, was ich ändern muss? Auch würde ich mich über Verbesserungen des sonstigen Codes freuen.

Danke im Voraus.
 
Hallo,

wird das CAnimateCtrl auch irgendwo erzeugt ( m_video.Create( ... ); )? Die Assertion sagt nämlich aus, dass zu dem Control kein Fenster existiert.

Gruß
MCoder
 
Jetzt habe ich
Code:
	LPVOID pParam;
	pParam = pParent;
	CWnd* pParentWnd = (CWnd*) pParam;
	CAnimateCtrl    m_video;
	m_video.Create(WS_CHILD|WS_VISIBLE|ACS_CENTER,CRect(10,10,100,100), pParentWnd, 1);

am Anfang hinzugefügt, aber was brauche ich für pParam. Er meckert mir, dass ich pParam nicht initialisiert habe. Was fehlt also?
 
Also, was du da mit pParam veranstaltest, ist mir schleierhaft. Wenn du den Code innerhalb deines modalen Dialogs aufrufst, kannst du es so schreiben:
C++:
m_video.Create(WS_CHILD|WS_VISIBLE|ACS_CENTER,CRect(10,10,100,100), this, 1);
Übrigens solltest du die Deklaration ( CAnimateCtrl m_video; ) im Header deines Dialogs und die obige Create-Methode bei OnInitDialog() aufrufen.

Gruß
MCoder
 
Gut ich habe ein bisschen probiert und habe es zum laufen gebracht, aber mit den Einschränkungen werden meine Videos zu groß und müssen noch seperat mit Ton versehen werden.

Nun wollte ich fragen was mit der "MCIWnd Window Class" auf sich hat und was ich bruche um eine einfache Avi abzuspielen.

Da ich mich noch nicht ganz in die Materie eingearbeitet habe, bzw. meistens nicht weiß was ich mache (das kommt später (learning by doing)) habe ich jetzt versucht das Beispiel zum laufen zu bringen, aber leider ohne Erfolg.

Könnte mir vielleicht jemand sagen, wohin die Zeilen müssen und welche Werte ich anpassen muss. Mir geht es jetzt um eine ganz einfache MFC-Anwendung ohne modalen Dialog.

Danke im Voraus.
 
Ich habe nochmal gegoogelt und etwas (fast ganz unten) gefunden. Nun bekomme ich beim Starten des Videos über einen Button in einem neuen Fenster die Fehlermeldung:

Code:
MCI-Fehler:
Der Gerätetreiber ist nicht bereit.

Der Code ist (fast) der gleiche wie im Forum.

Fehlt mir eine Initialisierung von der MCI-Klasse, -Treiber?
 
Zuletzt bearbeitet:
Zurück