Probleme mit WinApi

CodeCrafterCpp

Erfahrenes Mitglied
Hallo,
Ich hab mir mal Win-api.de angeschaut.
Jetzt hab ich mir alles rauskopiert und es geht immer noch nicht...
Der Code ist:
Code:
#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, "Haöö", "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;
}


Hab ich was Falsch gemacht oder ist das einfach zu alt?



mfG
CodeCrafterCpp
 
Ich bekomme die Fehler:
Fehler 2 error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [34]' in 'LPCWSTR' nicht möglich c:\users\******\desktop\übungen\übungen\main.cpp 21


7 IntelliSense: Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. c:\users\******\desktop\übungen\übungen\main.cpp 20


Ich bekomme beide mehrmals.
 
Danke,
Aber denn müsste ich noch wissen wie das geht :D

EDIT: Danke.
War eine Sinnlose Frage :D
 
Zuletzt bearbeitet von einem Moderator:
Projekt-Optionen...
wie die genaue Beschriftung lautet, weiß ich leider nicht auswendig.
Dinge mit "Unicode" im Namen dürften sowieso selten sein.
 
Da das Thema noch nicht erledigt ist:
MessageBox() ist meines Wissens eine Definition und wird je nach Projekteinstellungen auf MessageBoxW() (Unicode) bzw. MessageBoxA() (ANSI) umgeleitet. Dasselbe gilt auch für andere Funktionen.
Im Sinne der Übersichtlichkeit würde ich persönlich die A/W hinschreiben, aber das kannst du machen, wie du willst.

Markiere das Thema bitte noch als erledigt (nur wenn's das auch ist :) )

Gruss
cwriter
 
Wenn man A/W angibt, greift die Einstellung aber nicht mehr.
Wenn man es dann doch umstellen will müsste man den ganzen Code ändern.

Und Erledigt ist jetzt auch.
 
Aber um den anderen Weg auch zu dokumentieren: Es gibt das _T()-Makro. Das markiert ein char* bzw. char[] als wchar_t* bzw. wchar_t[]. Beispiel:

C:
int iAntwort = MessageBox(NULL, _T("Haöö"), _T("Ha, ha, ha, ha..."),
                                   MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1);

Wenn der Unicode-Support abgeschaltet ist, wird das Makro einfach nichts machen. Statt _T kann auch _TEXT verwendet werden.
 
Geht das mit einem vorher definierten char [] auch? Bei mir stand immer: "LText konnte nicht gefunden werden" oder so ähnlich.

Gruss
cwriter
 
Zurück