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

chris1982nrw

Frischling

  • »chris1982nrw« ist der Autor dieses Themas

Beiträge: 31

Wohnort: Köln

  • Private Nachricht senden

1

13.07.2007, 04:47

Funktioniert nicht. *grübel*

Hallo,

ich hab' gerade folgenden Code in Visual C++ 2005 Express
compilieren wollen:


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
#define STRICT
#include <windows.h>

const char  szWitz[] = "\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n"
                       "\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n"
                       "sondern benutze sie mehrmals.\"";

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    int iAntwort = MessageBox(NULL, szWitz, "Ha, ha, ha, ha...",
                                   MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1);
    if (IDOK == iAntwort)
   {
      MessageBox(NULL, "Ja, ich finde den Witz auch Ok...",
                       "Sie haben auf Ok gedrückt",
                       MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
   }
    else if (IDCANCEL == iAntwort)
   {
      MessageBox(NULL, "Ja, warum haben sie denn auf Abbrechen gedrückt?\n"
                       "Hat ihnen der Witz etwa nicht gefallen?",
                       "Sie haben auf Abbrechen gedrückt",
                       MB_ICONINFORMATION  | MB_OK | MB_DEFBUTTON1);
   }
    return 0;
}


Zuvor hab ich ein Neues Projekt (WIN32-Konsolenanwendung)
vom Anwendungstyp "Windows-Anwendung" genommen
ohne vorkompilierten Header.

Dann bekomm ich beim compilieren folgende 3 Fehlermeldungen:

Fehler 1 error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [137]' in 'LPCWSTR' nicht möglich c:\dokumente und einstellungen\egal\eigene dateien\visual studio 2005\projects\windows1\windows1\windows1.cpp 12
Fehler 2 error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [34]' in 'LPCWSTR' nicht möglich c:\dokumente und einstellungen\egal\eigene dateien\visual studio 2005\projects\windows1\windows1\windows1.cpp 17
Fehler 3 error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [89]' in 'LPCWSTR' nicht möglich c:\dokumente und einstellungen\egal\eigene dateien\visual studio 2005\projects\windows1\windows1\windows1.cpp 24

Wo liegt der Fehler ?

Den Code hab ich von diesem Tutorial:


http://www.win-api.de/tutorials.php?tutid=2

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

13.07.2007, 07:38

Entweder du schaltest von Unicode auf Multibyte um (Projekteinstellungen) oder du verwendest:

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
#define STRICT 
#include <windows.h> 
 
const wchar_t szWitz[] = L"\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n" 
                       L"\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n" 
                       L"sondern benutze sie mehrmals.\""; 
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 
{ 
    int iAntwort = MessageBox(NULL, szWitz, L"Ha, ha, ha, ha...", 
                                   MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1); 
    if (IDOK == iAntwort) 
   { 
      MessageBox(NULL, L"Ja, ich finde den Witz auch Ok...", 
                       L"Sie haben auf Ok gedrückt", 
                       MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1); 
   } 
    else if (IDCANCEL == iAntwort) 
   { 
      MessageBox(NULL, L"Ja, warum haben sie denn auf Abbrechen gedrückt?\n" 
                       L"Hat ihnen der Witz etwa nicht gefallen?", 
                       L"Sie haben auf Abbrechen gedrückt", 
                       MB_ICONINFORMATION  | MB_OK | MB_DEFBUTTON1); 
   } 
    return 0; 
}


Oder du machst das ganze kompatibel zu Multibyte und Unicode:

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
#define STRICT 
#include <windows.h> 
 
const TCHAR szWitz[] = TEXT( "\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n" ) 
                       TEXT( "\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n"  )
                       TEXT( "sondern benutze sie mehrmals.\"" ); 
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 
{ 
    int iAntwort = MessageBox(NULL, szWitz, TEXT( "Ha, ha, ha, ha..." ), 
                                   MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1); 
    if (IDOK == iAntwort) 
   { 
      MessageBox(NULL, TEXT( "Ja, ich finde den Witz auch Ok..." ), 
                       TEXT( "Sie haben auf Ok gedrückt" ), 
                       MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1); 
   } 
    else if (IDCANCEL == iAntwort) 
   { 
      MessageBox(NULL, TEXT( "Ja, warum haben sie denn auf Abbrechen gedrückt?\n" ) 
                       TEXT( "Hat ihnen der Witz etwa nicht gefallen?" ), 
                       TEXT( "Sie haben auf Abbrechen gedrückt" ), 
                       MB_ICONINFORMATION  | MB_OK | MB_DEFBUTTON1); 
   } 
    return 0; 
}


Im Übrigen solltest du keine Konsolen Anwendung sondern eine Win32 Anwendung verwenden.
@D13_Dreinig

chris1982nrw

Frischling

  • »chris1982nrw« ist der Autor dieses Themas

Beiträge: 31

Wohnort: Köln

  • Private Nachricht senden

3

13.07.2007, 15:07

Super, Danke. :-)

Super, danke, es hat geklappt.

hab die 2te Version genommen die kompatible zu Multibyte und Unicode
ist.

Zitat

Im Übrigen solltest du keine Konsolen Anwendung sondern eine Win32 Anwendung verwenden.


Ne ne, die Einstellungen bei C++ 2005 Express waren schon in Ordnung. ;)

Werbeanzeige