Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.06.2005, 20:35

Problem mit Musik

Hallo Leute, ich hab mir mal angesehen, wie man mit DirectShow Musik abspielt. Aber irgendwie kommt bei der Methode Run ein Fehler. Hier mein Quelltext:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <windows.h>
#include <DShow.h>
#include "Resource.h"

IGraphBuilder*  g_pGraph;
IMediaControl*  g_pControl;
IBasicAudio*    g_pBasicAudio;
IMediaSeeking*  g_pSeeking;
char* g_pcFileName="Music.MP3";

HRESULT InitMusic()
{
    if (FAILED(CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,
                            (void**)&g_pGraph)))
    {
        return E_FAIL;
    }

    WCHAR g_awcFileName[256];
    MultiByteToWideChar(CP_ACP,0,"Sound.WAV",-1,g_awcFileName,256);
    
    if(FAILED(g_pGraph->RenderFile(g_awcFileName, NULL)))
    {
        return E_FAIL;
    }

    g_pGraph->QueryInterface(IID_IMediaControl,(void**)(&g_pControl));
    g_pGraph->QueryInterface(IID_IMediaSeeking,(void**)(&g_pSeeking));
    g_pGraph->QueryInterface(IID_IBasicAudio,(void**)(&g_pBasicAudio));
    if (!g_pControl || !g_pBasicAudio || !g_pSeeking) return E_FAIL;

    g_pSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME);
    
    return S_OK;
}

BOOL CALLBACK DlgProc(HWND hWnd,UINT uiMsg,WPARAM wParam,LPARAM lParam)
{
    switch(uiMsg)
    {
    case WM_INITDIALOG: InitMusic();
                        break;
    case WM_ACTIVATE:   LONGLONG llPos;
                        llPos=0;
                        /*if (FAILED(g_pSeeking->SetPositions(&llPos,
                                    AM_SEEKING_AbsolutePositioning,
                                    NULL, AM_SEEKING_NoPositioning)))
                        {
                            MessageBox(NULL,"a",NULL,NULL);
                        }*/
                        if (FAILED(g_pControl->Run()))
                        {
                            MessageBox(NULL,NULL,NULL,NULL);
                        }
                        break;
    case WM_COMMAND:    switch(wParam)
                        {
                        case IDOK:      if (g_pGraph!=NULL)         g_pGraph->Release();
                                        if (g_pControl!=NULL)       g_pControl->Release();
                                        if (g_pBasicAudio!=NULL)    g_pBasicAudio->Release();
                                        if (g_pSeeking!=NULL)       g_pSeeking->Release();
                                        EndDialog(hWnd,0);
                                        break;
                        case IDC_PLAY:  
                                        break;
                                            
                        }
                        break;
    default:            return FALSE;
    }
    
    return TRUE;
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)
{
    DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG),NULL,(DLGPROC)DlgProc);
    return 0;
}
Mein Projekt: Rise of the Sylvan

Thunder Storm

Treue Seele

Beiträge: 297

Wohnort: fragt einfach per pm nix da ;)

Beruf: Ausbildung (Technischer Assistent für Software Technologie)

  • Private Nachricht senden

2

11.06.2005, 21:20

mit directplay hab ich mich noch net beschäftigt. nutz doch fmod. dan arbeitest scho mal für die zukunft vor. ich kenn schon parr aktuelle games die in punkto sound auf fmod setzen

3

12.06.2005, 09:44

OK, aber mich würde trotzdem mal interessieren, was ich falsch gemacht habe.
Mein Projekt: Rise of the Sylvan

Werbeanzeige