Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Problem mit visuall C++ HILFE





Frage

Hallo hab ein problem mit einem Programm den quelltext könnt ihr hier sehen. // aufDlg.cpp: Implementierungsdatei // #include "stdafx.h" #include "öffnen.h" #include "aufDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Dialogfeld CaufDlg CaufDlg::CaufDlg(CWnd* pParent /*=NULL*/) : CDialog(CaufDlg::IDD, pParent) { //{{AFX_DATA_INIT(CaufDlg) // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein //}}AFX_DATA_INIT } void CaufDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CaufDlg) // HINWEIS: Der Klassen-Assistent fügt hier DDX- und DDV-Aufrufe ein //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CaufDlg, CDialog) //{{AFX_MSG_MAP(CaufDlg) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Behandlungsroutinen für Nachrichten CaufDlg void CaufDlg::OnButton1() { bool OpenCloseCDROM(bool bOpen, const TCHAR szDrive[]) { MCI_OPEN_PARMS op; MCI_STATUS_PARMS sp; DWORD dwFlags; ZeroMemory(&op, sizeof(MCI_OPEN_PARMS)); op.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO; op.lpstrElementName = szDrive; dwFlags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE; if(!mciSendCommand(0, MCI_OPEN, dwFlags, (unsigned long)&op)) { sp.dwItem = MCI_STATUS_READY; if(bOpen) mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN, 0); else mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED, 0); mciSendCommand(op.wDeviceID, MCI_CLOSE, MCI_WAIT, 0); } return true; } } jetzt bringt es mir eine fehler meldung die so aussieht. --------------------Konfiguration: öffnen - Win32 Debug-------------------- Kompilierung läuft... aufDlg.cpp H:\C ++\öffnen\aufDlg.cpp(48) : error C2601: 'OpenCloseCDROM' : Lokale Funktionsdefinitionen sind unzulaessig Fehler beim Ausführen von cl.exe. öffnen.exe - 1 Fehler, 0 Warnung(en) die meldung zeigt auf die geschweifte klammerunter dem BOOL. DAs Programm soll eigentlich nur mit einem button das cd fach öffen oder schließen. Bitte helft mir.

Antwort 1 von Kai

Her liegt der Hund begraben.
Eine Funktion in einer Funktion:

void CaufDlg::OnButton1()
{
bool OpenCloseCDROM(bool bOpen, const TCHAR szDrive[])
{



Richtig wäre z.B.
( die Funktion OpenCloseCDROM nimm mal als Funktion in der Klasse auf )


void
CaufDlg::OnButton1()
{
OpenCloseCDROM( blah blah );
}

bool
CaufDlg::OpenCloseCDROM(bool bOpen, const TCHAR szDrive[])
{
blah blah...

return true;
}



Antwort 2 von Patrick De.

Also das hab ich getan nur bringt er mir jetzt weitere fehler meldungen meldungen!!!

// aufDlg.cpp: Implementierungsdatei
//

#include "stdafx.h"
#include "öffnen.h"
#include "aufDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CaufDlg


CaufDlg::CaufDlg(CWnd* pParent /*=NULL*/)
: CDialog(CaufDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CaufDlg)
// HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein
//}}AFX_DATA_INIT
}


void CaufDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CaufDlg)
// HINWEIS: Der Klassen-Assistent fügt hier DDX- und DDV-Aufrufe ein
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CaufDlg, CDialog)
//{{AFX_MSG_MAP(CaufDlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Behandlungsroutinen für Nachrichten CaufDlg

void CaufDlg::OnButton1()
{
bool OpenCloseCDROM(bool bOpen, const TCHAR szDrive[]);
}

bool CaufDlg::OpenCloseCDROM(bool bOpen, const TCHAR szDrive[])
{

MCI_OPEN_PARMS op;
MCI_STATUS_PARMS sp;
DWORD dwFlags;

ZeroMemory(&op, sizeof(MCI_OPEN_PARMS));
op.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
op.lpstrElementName = szDrive;

dwFlags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE;

if(!mciSendCommand(0, MCI_OPEN, dwFlags, (unsigned long)&op))
{
sp.dwItem = MCI_STATUS_READY;

if(bOpen)
mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN, 0);
else
mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED, 0);

mciSendCommand(op.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);
}

return true;
}

}
hier die fehler meldungen

--------------------Konfiguration: öffnen - Win32 Debug--------------------
Kompilierung läuft...
aufDlg.cpp
H:\C ++\öffnen\aufDlg.cpp(50) : error C2039: 'OpenCloseCDROM' : Ist kein Element von 'CaufDlg'
h:\c ++\öffnen\aufdlg.h(13) : Siehe Deklaration von 'CaufDlg'
H:\C ++\öffnen\aufDlg.cpp(53) : error C2065: 'MCI_OPEN_PARMS' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(53) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'op'
H:\C ++\öffnen\aufDlg.cpp(53) : error C2065: 'op' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(54) : error C2065: 'MCI_STATUS_PARMS' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(54) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'sp'
H:\C ++\öffnen\aufDlg.cpp(54) : error C2065: 'sp' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(58) : error C2228: Der linke Teil von '.lpstrDeviceType' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(58) : error C2065: 'MCI_DEVTYPE_CD_AUDIO' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(59) : error C2228: Der linke Teil von '.lpstrElementName' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(61) : error C2065: 'MCI_OPEN_TYPE' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(61) : error C2065: 'MCI_OPEN_TYPE_ID' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(61) : error C2065: 'MCI_OPEN_ELEMENT' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(61) : error C2065: 'MCI_OPEN_SHAREABLE' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(63) : error C2065: 'mciSendCommand' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(63) : error C2065: 'MCI_OPEN' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(65) : error C2228: Der linke Teil von '.dwItem' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(65) : error C2065: 'MCI_STATUS_READY' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(68) : error C2228: Der linke Teil von '.wDeviceID' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(68) : error C2065: 'MCI_SET' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(68) : error C2065: 'MCI_SET_DOOR_OPEN' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(70) : error C2228: Der linke Teil von '.wDeviceID' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(70) : error C2065: 'MCI_SET_DOOR_CLOSED' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(72) : error C2228: Der linke Teil von '.wDeviceID' muss eine Klasse/Struktur/Union sein
H:\C ++\öffnen\aufDlg.cpp(72) : error C2065: 'MCI_CLOSE' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(72) : error C2065: 'MCI_WAIT' : nichtdeklarierter Bezeichner
H:\C ++\öffnen\aufDlg.cpp(78) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'
H:\C ++\öffnen\aufDlg.cpp(78) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'
H:\C ++\öffnen\aufDlg.cpp(78) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'
Fehler beim Ausführen von cl.exe.

öffnen.exe - 29 Fehler, 0 Warnung(en)
bitte brauche rat
MFG Patrick


Antwort 3 von Kai

Das liegt höchstwahrscheinlich daran, dass Du die Funktion im Klassen-Header noch nicht eingetragen hast.

Trag mal im Header von CaufDlg unter

private:

bool OpenCloseCDROM(bool bOpen, const TCHAR szDrive[]);

ein.

Kann auch

public:
oder
protected:

sein

Aber noch ein besser Tipp, kauf Dir mal nen C++ Buch.




Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: