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;
}
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
// 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.
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.

