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

NicoH

Treue Seele

  • »NicoH« ist der Autor dieses Themas

Beiträge: 89

Wohnort: Elsterwerda

Beruf: Student Informatik

  • Private Nachricht senden

1

20.04.2006, 19:44

Fehler wo gar kein Fehler ist (Abschnitt 10 Windowsprogramm)

c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(171) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(171) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'

C-/C++-Quelltext

1
2
case ID_BTN_END:
int Resultat; // Rückgabewert der Messagebox


c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(175) : error C2065: 'Resultat': nichtdeklarierter Bezeichner

C-/C++-Quelltext

1
2
3
4
5
6
          int Resultat; // Rückgabewert der Messagebox


          // Messagebox für Sicherheitsabfrage

          Resultat = MessageBox (hWnd, "Wirklich beenden?",
                                 "Programm beenden",
                                 MB_YESNO | MB_ICONQUESTION);


ist doch vorhanden ??
mfg NicoH

3 Wichtige Regeln des Programmierers:
- Nur in der Nacht programmieren
- Viel Kaffe und kalte Pizza im Vorrat haben (Cola geht auch ;))
- Keine Freundin (sie stört im wichtigsten Augenblick)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

20.04.2006, 20:17

1.) Wozu brauchst du einen Rückgabewert für ne MessageBox?
2.) Wieso hast du das steht da 2x int Resultat?
3.) Poste mal den completten Code

NicoH

Treue Seele

  • »NicoH« ist der Autor dieses Themas

Beiträge: 89

Wohnort: Elsterwerda

Beruf: Student Informatik

  • Private Nachricht senden

3

20.04.2006, 20:31

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#include <windows.h>

// Prototyp der Callback-Funktion

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam);

HWND MakeMainwindow (HINSTANCE hInst);

void MakeElements (HWND hWnd, HINSTANCE hInst);

/*#define ID_STATICTEXT 4000;
#define ID_DATNAME    4001;
#define ID_PASS       4002;
#define ID_UNZIPNAME  4003;
*/
#define ID_BTN_UNZIP  4004;
#define ID_BTN_END    4005;

/*
HWND hText;
HWND hDatname;
HWND hPass;
HWND hUnzipname;
*/
HWND hUnzip;
HWND hBeenden;

// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{
  HWND hWnd;   // Fenster-Handle

  MSG message; // Nachricht


  // Hauptfenster erstellen

  hWnd = MakeMainwindow (hInst);

  // Prüfen, ob alles glatt ging

  if (hWnd == NULL)
    return (0);

  // Alle Steuerelemente erstellen

  MakeElements (hWnd, hInst);

  // Der "Herzschlag" des Programms

  // Hier werden alle Nachrichten abgeholt,

  // übersetzt und weitergeleitet

  //

  while (GetMessage (&message, NULL, 0, 0) )
  {
    TranslateMessage (&message);
    DispatchMessage  (&message);

  }

  // Programm beenden

  return (int)(message.wParam);

} // WinMain



// Erstelle Hauptfenster

//

// Hauptfenster erstellen und Handle zurückliefern

//

HWND MakeMainwindow (HINSTANCE hInst)
{
  HWND        hWnd;        // Fenster-Handle

  WNDCLASSEX  windowclass; // Nachricht


  // Der Klassenname des Fensters ist frei wählbar

  const char szClassName[] = "Datei";

  // Struktur mit gewünschten Eigenschaften füllen

  //


  // Größe der Struktur zwischenspeichern

  windowclass.cbSize = sizeof (WNDCLASSEX);

  // Fenster soll beim Verschieben neu gezeichnet werden

  windowclass.style = CS_HREDRAW | CS_VREDRAW;

  // Zeiger auf Callback-Funktion

  windowclass.lpfnWndProc = WindowProc;

  // Keine erweiterten Einstellungen

  windowclass.cbClsExtra = 0;
  windowclass.cbWndExtra = 0;

  // Instanz speichern

  windowclass.hInstance = hInst;

  // Icons und Cursor festlegen

  windowclass.hIcon   = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

  // Hintergrundfarbe festlegen

  windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;

  // Ein Menü brauchen wir nicht

  windowclass.lpszMenuName = NULL;

  // Klassenname angeben

  windowclass.lpszClassName = szClassName;

  // Fensterklasse registrieren

  if (!RegisterClassEx (&windowclass) )
    return (NULL);

  // Das Fenster erzeugen

  hWnd = CreateWindowEx (NULL,
                         szClassName,
                         "Unzipper",
                         WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                         CW_USEDEFAULT, CW_USEDEFAULT,
                         300, 135,
                         NULL,
                         NULL,
                         hInst,
                         NULL);

  // Fensterhandle zurückgeben

  return (hWnd);

} // ErstelleHauptfenster



// ErstelleSteuerelemente

//

// Alle Steuerelemente erstellen

//

void MakeElements (HWND hWnd, HINSTANCE hInst)
{


} // ErstelleSteuerelemente



// Callback-Funktion zur Nachrichtenverarbeitung

//


LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam)
{
  // Messages auswerten

  switch (message)
  {
    // Fenster schließen? (Auch Alt-F4)

    case WM_DESTROY:
    {
      // Nachricht zum Beenden schicken

      PostQuitMessage (0);
      return (0);

    } 

    // Ab hier die Nachrichten unserer Child-Fenster bearbeiten

    case WM_COMMAND:
    {
        switch (wParam)
      {
        
        case 1:
            {


            }
        // Wurde "Beenden" angeklickt?

        case ID_BTN_END://Zeile 171

        { //zeile 172

          int Resultat; // Rückgabewert der Messagebox


          // Messagebox für Sicherheitsabfrage

          Resultat = MessageBox (hWnd, "Wirklich beenden?",
                                 "Programm beenden",
                                 MB_YESNO | MB_ICONQUESTION);

          // Wurde "Ja" angeklickt?

          if (Resultat == IDYES)
          {
            // Ja, also Programm beenden

            PostQuitMessage (0);
            return (0);

          }

          // Nein, also ganz normal weiter

          return (0);
        }
         
      } 
    } 
  }

  // Die Nachricht wurde nicht von uns verarbeitet, also

  // von Windows verarbeiten lassen

  return (DefWindowProc (hWnd, message, wParam, lParam) );

} // WindowProc


Fehler:
c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(171) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(171) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
c:\Dokumente und Einstellungen\NicoH\Eigene Dateien\Visual Studio Projects\Aufgabe1.3\Aufgabe1_3.cpp(172) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'


also ich wollte nur neue Buttons hinzufügen mit neuer Konstante und alles da kam bei den Buttons shcon Fehler drum ahbe ich die erstmal alle rausgeworfen... obwohl da auch kein Fehler war..die kamen alle erst als ich die Konstanten geändert hatte,....
mfg NicoH

3 Wichtige Regeln des Programmierers:
- Nur in der Nacht programmieren
- Viel Kaffe und kalte Pizza im Vorrat haben (Cola geht auch ;))
- Keine Freundin (sie stört im wichtigsten Augenblick)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

20.04.2006, 20:57

2 Sekunden Arbeit....

1.) Benutze breaks in switches, sonst kann es zu bösen Überraschungen kommen
2.) NACH PRÄPROZESSORDIREKTIVEN (z.B. #define) kommen niemals Semilkolon.

#defines werden vor dem eigentlichen Übersetzen in deinen Code kopiert, bei dir stand dann:
aus :

C-/C++-Quelltext

1
case ID_BTN_END:

mach

C-/C++-Quelltext

1
[case 4005;:


Was eindeutig ein Fehler ist. Deshalb: Finger weg von Defines!
3.) Ein Compiler hat immer Recht, der Mensch ist immer im Unrecht!

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include <windows.h>

// Prototyp der Callback-Funktion

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam);

HWND MakeMainwindow (HINSTANCE hInst);

void MakeElements (HWND hWnd, HINSTANCE hInst);

/*#define ID_STATICTEXT 4000;
#define ID_DATNAME    4001;
#define ID_PASS       4002;
#define ID_UNZIPNAME  4003;
*/
#define ID_BTN_UNZIP  4004      // Defines haben kein Semikolon

#define ID_BTN_END    4005

/*
HWND hText;
HWND hDatname;
HWND hPass;
HWND hUnzipname;
*/
HWND hUnzip;
HWND hBeenden;

// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{
  HWND hWnd;   // Fenster-Handle

  MSG message; // Nachricht


  // Hauptfenster erstellen

  hWnd = MakeMainwindow (hInst);

  // Prüfen, ob alles glatt ging

  if (hWnd == NULL)
    return (0);

  // Alle Steuerelemente erstellen

  MakeElements (hWnd, hInst);

  // Der "Herzschlag" des Programms

  // Hier werden alle Nachrichten abgeholt,

  // übersetzt und weitergeleitet

  //

  while (GetMessage (&message, NULL, 0, 0) )
  {
    TranslateMessage (&message);
    DispatchMessage  (&message);

  }

  // Programm beenden

  return (int)(message.wParam);

} // WinMain



// Erstelle Hauptfenster

//

// Hauptfenster erstellen und Handle zurückliefern

//

HWND MakeMainwindow (HINSTANCE hInst)
{
  HWND        hWnd;        // Fenster-Handle

  WNDCLASSEX  windowclass; // Nachricht


  // Der Klassenname des Fensters ist frei wählbar

  const char szClassName[] = "Datei";

  // Struktur mit gewünschten Eigenschaften füllen

  //


  // Größe der Struktur zwischenspeichern

  windowclass.cbSize = sizeof (WNDCLASSEX);

  // Fenster soll beim Verschieben neu gezeichnet werden

  windowclass.style = CS_HREDRAW | CS_VREDRAW;

  // Zeiger auf Callback-Funktion

  windowclass.lpfnWndProc = WindowProc;

  // Keine erweiterten Einstellungen

  windowclass.cbClsExtra = 0;
  windowclass.cbWndExtra = 0;

  // Instanz speichern

  windowclass.hInstance = hInst;

  // Icons und Cursor festlegen

  windowclass.hIcon   = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

  // Hintergrundfarbe festlegen

  windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;

  // Ein Menü brauchen wir nicht

  windowclass.lpszMenuName = NULL;

  // Klassenname angeben

  windowclass.lpszClassName = szClassName;

  // Fensterklasse registrieren

  if (!RegisterClassEx (&windowclass) )
    return (NULL);

  // Das Fenster erzeugen

  hWnd = CreateWindowEx (NULL,
                         szClassName,
                         "Unzipper",
                         WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                         CW_USEDEFAULT, CW_USEDEFAULT,
                         300, 135,
                         NULL,
                         NULL,
                         hInst,
                         NULL);

  // Fensterhandle zurückgeben

  return (hWnd);

} // ErstelleHauptfenster



// ErstelleSteuerelemente

//

// Alle Steuerelemente erstellen

//

void MakeElements (HWND hWnd, HINSTANCE hInst)
{


} // ErstelleSteuerelemente



// Callback-Funktion zur Nachrichtenverarbeitung

//


LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam)
{
  // Messages auswerten

  switch (message)
  {
    // Fenster schließen? (Auch Alt-F4)

    case WM_DESTROY:
    {
      // Nachricht zum Beenden schicken

      PostQuitMessage (0);
      return (0);

    }

    // Ab hier die Nachrichten unserer Child-Fenster bearbeiten

    case WM_COMMAND:
    {
        /// !!! hier warn Fehler!!! LOWORD

      switch (LOWORD(wParam))
      {
       
        case 1:
            {


            }
        break; // !!! nicht vergessen!

        // Wurde "Beenden" angeklickt?

        case ID_BTN_END://Zeile 171

        { //zeile 172

          int Resultat; // Rückgabewert der Messagebox


          // Messagebox für Sicherheitsabfrage

          Resultat = MessageBox (hWnd, "Wirklich beenden?",
                                 "Programm beenden",
                                 MB_YESNO | MB_ICONQUESTION);

          // Wurde "Ja" angeklickt?

          if (Resultat == IDYES)
          {
            // Ja, also Programm beenden

            PostQuitMessage (0);
            return (0);

          }

          // Nein, also ganz normal weiter

          return (0);
        }
         
      }
    }
  }

  // Die Nachricht wurde nicht von uns verarbeitet, also

  // von Windows verarbeiten lassen

  return (DefWindowProc (hWnd, message, wParam, lParam) );

} // WindowProc

NicoH

Treue Seele

  • »NicoH« ist der Autor dieses Themas

Beiträge: 89

Wohnort: Elsterwerda

Beruf: Student Informatik

  • Private Nachricht senden

5

20.04.2006, 21:02

ach die break hatte ich alle gelöscht ... weil ich dachte ich habe eins vergessen... udn deswegen meckert er... also echt danke.. und habe ich mir erst gestern abend den abschnitt durch gelesen welche konstanten art man nimmt... is mir echt nicht aufgefallen das da keien hindrüfen ..und mein compiler hat nur von syntax gelabbert..aslo hier wäre irgendwann bei mir der pfaden geplatzt und hätte den pc ausen fenster gehauen... ^^

danke danke danke :wirbel:
mfg NicoH

3 Wichtige Regeln des Programmierers:
- Nur in der Nacht programmieren
- Viel Kaffe und kalte Pizza im Vorrat haben (Cola geht auch ;))
- Keine Freundin (sie stört im wichtigsten Augenblick)

Werbeanzeige