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 ]
000
11.08.2003, 20:57 Uhr
~Fuat
Gast


Hallo leute

Ich versuche ein Dialog Programm zuschreiben Vc6 MFC.

Ich habe eine Abgeleitet Klasse CMaxMidiIn:MyMidiIn

Diese Klasse hat eine methode der die ankommende midinoten nach MidiOut zurückt Hallt.

C++:
// MyMidiIn virtual functions

//---------------------------------------------------------------------------
// ProcessMidiData
//---------------------------------------------------------------------------
BOOL MyMidiIn::ProcessMidiData(LPMIDIEVENT lpEvent)
{
if(EchoOut)
EchoOut->Put(lpEvent);
return TRUE;
}


Der daten typ:
(LPMIDIEVENT lpEvent) Empfängt vom ein spielenden keyboard taste diese parameter

data1
data2
data3
status
time

Ich möchte in Dlg.cpp LPMIDIEVENT lpEvent Abfangen und data1 ändern.
wie mache ich das?
ich sitze schon zwei tagen und krige es nicht hin.


wenn ich in
BOOL MyMidiIn::ProcessMidiData(LPMIDIEVENT lpEvent)

lpEvent->data1=98;

schreibe dann geht das,Aber der wert ist nicht konstant ich muß über
Dlg.cpp zugriff haben um es zu ändern wenn etwas passiert.

wenn ich lpEvent über Dlg.cpp anspräche dann existier es nicht

Für Hilfe Tausend Dank

Grüße Fuat

Bearbeitung von op="0xdeadbeef":
cpp-tags eingefügt

Dieser Post wurde am 12.08.2003 um 10:23 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.08.2003, 21:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich weiss nicht ob ich das so richtig verstanden habe was du da machen willst.

wenn du von deinem Dialog aus zugriff auf die members der klasse haben willst, kannnst du das, z.b. so machen, das du den Konstruktor deines Dialoges veränderst und ihm dann noch zusätzlichen einen pointer auf deine Klasse mit übergibst

also in etwa so
headerfile

C++:
MyDlg(CMaxMidiIn *p_midi,CWnd* pParent=NULL ){
public:
..
CMaxMidiIn *p_midi;




C++:
MyDlg::MyDlg(CMaxMidiIn *p_midi,CWnd* pParent ){
//{{AFX_DATA_INIT(MessungDlg)
....
//}}AFX_DATA_INIT
this->p_midi = p_midi;
}



wenn dein übergebener pointer auf nen CMaxMidiIn-Object zeigt kannst du dann auf die Members zugreifen

Gruss Heiko
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 11.08.2003 um 21:27 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.08.2003, 22:05 Uhr
~Fuat
Gast


Hi Heiko

ich habe es so gemacht wie du es geschrieben hast
ich bekomme eine fehler meldung

headerfile:

C++:
    CMaxMidiProtoDlg(LPMIDIEVENT*lpEvent,CWnd* pParent = NULL);    // Standard-Konstruktor
             public:
    LPMIDIEVENT*lpEvent;

In .cpp :
CMaxMidiProtoDlg::CMaxMidiProtoDlg(LPMIDIEVENT *lpEvent,CWnd* pParent /*=NULL*/)
    : CDialog(CMaxMidiProtoDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CMaxMidiProtoDlg)
        // HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
    //}}AFX_DATA_INIT
    // Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
    this->lpEvent = lpEvent;
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


dann bekomme ich diese fehler meldung:
CMaximum MIDI\Example Apps\MaxMidiProto\MaxMidiProto.cpp(57) : error C2512: 'CMaxMidiProtoDlg' : Kein geeigneter Standardkonstruktor verfuegbar

wenn ich den text anklicke dann springt der cursor hier hin

CMaxMidiProtoDlg dlg;
in
BOOL CMaxMidiProtoApp::InitInstance()

was mache ich falsch?

Bearbeitung von op="0xdeadbeef":
cpp-tags eingefügt

[note]Nächstes mal selbst dran denken[/note]

Dieser Post wurde am 12.08.2003 um 10:26 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.08.2003, 22:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du musst beim anlegen des dialoges ein pointer auf lpEvent übergeben

wobei ich überhautp noch nicht verstanden habe was du genau machen willst.
kann sein das ich dir totalen blödsinn erzählt habe.

Kannst du dein Problem vielleicht ein bisschen besser beschreiben?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.08.2003, 22:53 Uhr
~Fuat
Gast


LPMIDIEVENT lpEvent
ist die variable auf die ich zugreigen möchte
Aber sie ist nur innerhalb diese methode gültig

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


wenn ich auf den LPMIDIEVENT *lpEvent

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


dann bekomme ich diese Fehler meldung
Maximum MIDI\Example Apps\MaxMidiProto\MyMidiIn.cpp(28) : error C2511: 'ProcessMidiData' : Überladene Member-Funktion 'int (MidiEvent ** )' nicht in 'MyMidiIn' gefunden

ich möchte einfach auf LPMIDIEVENT lpEvent
von ausen zugreifen

[seufz]Seufz...[/seufz]

Dieser Post wurde am 12.08.2003 um 10:27 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.08.2003, 23:07 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn ich mich nicht irre und die put methode ein LPMIDIEVENT haben will musst du den pointer doch erst dereferenzieren

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


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.08.2003, 23:20 Uhr
~Fuat
Gast


Auch wenn ich es dereferenzieren


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


bekomme diese Fehler meldung:


Code:
C:\Maximum MIDI\Example Apps\MaxMidiProto\MyMidiIn.cpp(28) : error C2511: 'ProcessMidiData' : Überladene Member-Funktion 'int (MidiEvent ** )' nicht in 'MyMidiIn' gefunden
c:\maximum midi\example apps\maxmidiproto\mymidiin.h(6) : Siehe Deklaration von 'MyMidiIn'


ich kann machen was ich will es will einfach nicht klappen

Dieser Post wurde am 12.08.2003 um 09:16 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.08.2003, 23:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was will die mehtode denn nun haben guck doch mal im header noch vielleicht will die ja die adresse des pointers dann nimm &lpEvent
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.08.2003, 23:31 Uhr
~Fuat
Gast


Hier ist der header.

ich sehe nicht was ich da machen soll

C++:
#ifndef __MYMIDIIN__
#define __MYMIDIIN__
//===========================================================================
//    MyMidiIn Class
//===========================================================================
class MyMidiIn : public CMaxMidiIn
{
public:
    CMaxMidiOut* EchoOut;

    MyMidiIn();
    void SetEchoOutput(CMaxMidiOut* moDevice) { EchoOut = moDevice; };

// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(MyMidiIn)
    virtual BOOL ProcessMidiData(LPMIDIEVENT lpEvent);
    //}}AFX_VIRTUAL

protected:
    //{{AFX_MSG(MyMidiIn)
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
#endif //!__MYMIDIIN__


Dieser Post wurde am 12.08.2003 um 09:17 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.08.2003, 23:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


put methode sollte aus CMaxMidiIn sein schau mal in die klasse rein.

im header sollte doch drin stehen was die methode für parameter bekommen will
--
...fleißig wie zwei Weißbrote
 
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: