Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Methoden problem eine klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
11.08.2003, 23:46 Uhr
~Fuat
Gast


Hier ist kein put

Aber ein:

C++:
LPMIDIEVENT Get(void);// get received event, if any


//---------------------------------------------------------------------------
//    CMaxMidiIn Class Definition
//
//    (C) Copyright, Paul A. Messick, 1996
//---------------------------------------------------------------------------
class CMaxMidiIn : public CWnd
{
// Class-specific data
protected:
    HMIN        hDevice;        // handle to the MidiIn device
    DWORD        dwFlags;        // current flags for this device
    WORD        wDeviceID;        // device id, in case we need to reopen

    BOOL        fIsOpen;        // true if device is open
    char        Description[MAXPNAMELEN]; // description string
    HWND        hParentWnd;        // parent window handle
#ifdef _SYNC
    CMaxMidiSync* pSync;         // the sync device object
#endif
#ifdef _TRACK
    CMaxMidiTrack* pTrack;        // track object associated with this input (only one)
#endif
    BOOL        fIsStarted;        // true if input started

public:
// Constructors/Destructor
    CMaxMidiIn();                // default constructor
    CMaxMidiIn(HWND hParentWnd, WORD wDeviceID = 0);
    ~CMaxMidiIn();                // destructor

// sync-dependent functions
#ifdef _SYNC
    CMaxMidiIn(HWND hParentWnd, WORD wDeviceID, CMaxMidiSync* pSync = NULL, DWORD dwFlags = MIDIIN_DEFAULT);
    void Attach(CMaxMidiSync* pSync);    // attaches the sync device
    void Detach(CMaxMidiSync* pSync);    // detaches the sync device
    CMaxMidiSync* GetSync(void) { return pSync; };
#endif

// track-dependent functions
#ifdef _TRACK
    void Attach(CMaxMidiTrack* pTrack); // attaches the track object
    void Detach(CMaxMidiTrack* pTrack);    // detaches the track object
#endif

// Implementation
    WORD GetIDFromName(LPSTR lpszDesc); // find corresponding ID given string name
    
    BOOL CreateWnd(void);                // creates the hidden window
    void Attach(HWND hParentWnd);        // attaches the parent window

    BOOL IsOpen(void);            // returns true if device is open
    LPSTR GetDescription(void); // returns pointer to desc string
    int GetNumDevices(void);    // returns number of input devices available

    BOOL Open(WORD wDeviceID, DWORD dwFlags = MIDIIN_DEFAULT);
    void Close(void);            // close the device without destroying class object

    void Start(void);            // start midi in
    void Stop(void);            // stop midi in
    void Reset(void);            // reset the timestamp to zero, if started
    LPMIDIEVENT Get(void);        // get received event, if any

    // *** V1.55 DLL ***
    DWORD GetFilters(void) { return GetMidiInFilters(hDevice); };
    void SetFilters(DWORD dwFilters) { SetMidiInFilters(hDevice, dwFilters); };

    virtual BOOL ProcessMidiData(LPMIDIEVENT lpEvent) { return TRUE; };

// Generated message map functions
protected:
    //{{AFX_MSG(CMaxMidiIn)
    afx_msg LPARAM OnMidiData(WPARAM wParam, LPARAM lParam);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};


Dieser Post wurde am 12.08.2003 um 09:16 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
12.08.2003, 09:20 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


MidiIn kann ja keine Put-Methode haben, du kannst ja keine Events auf den MidiIn abfeuern, sondern nur welche empfangen (Get)
Du musst wenn dann eine MidiOut-Struktur benutzen und darauf das Put anwenden...

Schema:

Code:
Keyboard -> MidiIn.Get -> Bearbeiten des MidiStreams -> MidiOut.Put -> Keyboard


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
12.08.2003, 09:44 Uhr
~Fuat
Gast


Hi FloSoft

schön dich zu sehen

Mit dem put habe ich kein problem ich habe es so gemacht und es funktioniert

C++:
BOOL MyMidiIn::ProcessMidiData(LPMIDIEVENT lpEvent)
{
    if(EchoOut)
    EchoOut->Put(lpEvent);

    return TRUE;
}


Was ich möchte ist die ankommenden midi daten (lpEvent) abfangen
in einem Dlg.cpp und eine note dazu klingen lassen.

Beispiel: wenn Button1 gedrückt wurde dann überprüfe (lpEvent)

ist es ein (C) dann spiel (F) dazu.

Aber ich Komme aus Dlg.cpp einfach nicht an (lpEvent) nicht ran.

ich hatte dir doch die klassen gemailt.

kannst du mir sagen wie ich das machen kann

Grüsse Fuat


Bearbeitung von op="0xdeadbeef":
cpp-Tags eingefügt. Denk nächstes mal selbst dran.

Dieser Post wurde am 12.08.2003 um 10:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
12.08.2003, 12:48 Uhr
~Fuat
Gast


Hallo 0xdeadbeef

Denk nächstes mal selbst dran

Das tu ich schon seit 3 tagen bis in die Frühen morgen stunden.
Aber es will nicht klappen.

Ich habe jetzt in BOOL CMaxMidiProtoDlg::OnInitDialog()


C++:
LPMIDIEVENT Note3; angelegt und übergebe es der funktion

    MidiIn.ProcessMidiData(Note3);

LPMIDIEVENT Note3;  Es musste doch in Funktion landen
BOOL MyMidiIn::ProcessMidiData(LPMIDIEVENT lpEvent)
{
    if(EchoOut)
    EchoOut->Put(lpEvent);

    return TRUE;
}

so sieht mein code aus es gibt kein Fehler aus.
Aber es tut sich auch nichts.

    // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
    
    // open the first MIDI output    

    LPMIDIEVENT Note3;
    
    MidiOut.Attach(GetSafeHwnd());
    MidiOut.Open(0);

    // open and start the first MIDI input
    MidiIn.Attach(GetSafeHwnd());
    MidiIn.Open(0);
    MidiIn.Start();

    MidiIn.ProcessMidiData(Note3);

    Note3->data1=98;// tonhöhe auf 98

    MidiIn.SetEchoOutput(&MidiOut);// Hallt MidiIN nach MidiOut




was mache ich Falsch?

0xdeadbeef ich kann verstehen wenn du dir keine gedanken darüben machen möchtest.

Aber villeicht kann mir jemand anders helfen. negative txt edit hilft mir da nicht weiter.

edit by FloSoft: du musst vor deinem Code [ cpp ] und danach [ /cpp ] schreiben (ohne leerzeichen)

Dieser Post wurde am 12.08.2003 um 13:07 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
12.08.2003, 13:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Ich würde es so machen:


C++:
Note3->data1=98;// tonhöhe auf 98
MidiIn.ProcessMidiData(Note3);



Erst setzen und dann verarbeiten
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
12.08.2003, 13:59 Uhr
~Fuat
Gast


ich habe es gemacht FloSoft

aber es tut sich nichts.

Note3->data1=98;// tonhöhe auf 98
MidiIn.ProcessMidiData(Note3);

wird nicht geändert

Es wird nur geändert wenn ich es direckt in die datei schreibe

BOOL MyMidiIn::ProcessMidiData(LPMIDIEVENT lpEvent)
{
if(EchoOut)

lpEvent->data1=98;
EchoOut->Put(lpEvent);

return TRUE;
}


ich möchte LPMIDIEVENT Note3;
und nicht LPMIDIEVENT lpEvent

Ändern.

oooh mann das muss doch ergend wie gehen!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
12.08.2003, 14:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Was mir grad auffällt, probiers mal so:


C++:
MIDIEVENT Note3; // lass LP weg
Note3.data1 = 98;// tonhöhe auf 98
MidiIn.ProcessMidiData(&Note3); // hier referenz übergeben...


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
12.08.2003, 14:52 Uhr
~Fuat
Gast


Es ist keine veränderung zu hören


//MIDIEVENT Note3;// gibt Fehler aus
MidiEvent Note3;

MidiOut.Attach(GetSafeHwnd());
MidiOut.Open(0);

// open and start the first MIDI input
MidiIn.Attach(GetSafeHwnd());
MidiIn.Open(0);
MidiIn.Start();

Note3.data1=98;// tonhöhe auf 98

MidiIn.ProcessMidiData(&Note3);

MidiIn.SetEchoOutput(&MidiOut);// Hallt MidiIN nach MidiOut
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: