Messagebox Parameterliste?



  • MessageBox(NULL, "Unbekannter Fehler", "Fehler", MB_OK | MB_ICONEXCLAMATION);
    

    d:\main.cpp(11) : error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'const char [18]' in 'LPCWSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    😕 😕



  • http://c-plusplus.net/forum/viewtopic-var-t-is-178573.html (andere Funktion, aber selbes Problem)



  • Du scheinst im UNICODE-Modus zu kompilieren.
    Daher entweder

    MessageBoxA(...)
    

    oder

    MessageBox(NULL, L"...", L"Fehler", MB_OK | MB_ICONEXCLAMATION);
    

    verwenden.

    Am besten geht es sogar mit Einbindung von

    #include <tchar.h>
    
    MessageBox(NULL, _T("..."), _T("Fehler"), MB_OK | MB_ICONEXCLAMATION);
    


  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @CStoll: Dieses oder ähnliche Probleme tauchen irgendwie andauernd auf, sollte da vllt mal etwas in die FAQ gestellt werden (Falls ja, könnte ich bei Zeit ja mal was zusammentippen 😉 )?



  • objektiv betrachtet ist sowas doch ziemlich behindert, oder? oder irre ich mich da?



  • @CodeFinder: Das wäre eine Überlegung wert. Obwohl vermutlich ein Link auf guennie's Artikel (oder in die MSDN) alles erklärt.

    @Beobachter: "behindert" ist das nicht, bestenfalls gewöhnungsbedürftig.



  • @th: dafür extra tchar.h einzubinden ist wohl auch nicht so top. Nimm einfach TEXT anstelle von _T und du brauchst den Header nicht mehr.



  • also ich find das schon behindert. so kinderkacke hält einen doch nur vom richtigen programmieren ab. gewöhnen kann man sich an alles aber man muss das doch nich hinnehmen dass man statt "ich bin ein string", _T("bla") oder L"bla" oder @"bla" schreiben muss wenn doch alles strings sind...



  • (D)Evil schrieb:

    @th: dafür extra tchar.h einzubinden ist wohl auch nicht so top. Nimm einfach TEXT anstelle von _T und du brauchst den Header nicht mehr.

    tchar.h brauchst du ja nicht für _T sondern für die vielen anderen Funktionen die du aus der C-RT übersetzen musst: _tcslen, _tcscpy, _tcscmp, etc. pp.

    MfG SideWinder



  • Ist mir durchaus bewusst SideWinder. Aber in dem Beispiel ist _T einfach fehl am Platz weil der komplette Header nur für dieses Makro eingebunden werden muss. Würde er auch andere Funktionen daraus nutzen hast du recht. Da müsste der Header schon eingebunden werden und die entsprechenden Funktion daraus genutzt werden.



  • OK, danke erstmal!

    Unicode-Modus... was bedeutet das jetzt genau?

    Die ganzen Artikel erklären mir zwar, was Unicode ist, welche Vorteile ich habe und beinhalten auch technische Details, aber irgendwie bleiben für mich trotzdem paar Fragen offen.

    Was bedeutet der Unicode-Modus bei VC++ (Exp. 2005) jetzt genau?
    Andere Linkereinstellungen, oder... ?!?!?

    Warum ist das Marko _T (bzw. TEXT) nötig, und was macht es? Denn ich hab mir so ziemlich das selbe wie 'Beobachter' gedacht, wieso ist das nötig? Ich finde es nämlich auch ziemlich "unbequem". 😉

    Wäre es *ganz schlimm* wenn ich auf Unicode verzichten würde und stattdessen im Ansi (?) Modus kompiliere? Also ich sehe jetzt für mich eigentlich keine Notwendigkeit, den asiatischen Markt zu bedienen und es wäre dann wohl einfacher, ohne die Makros usw. (Und ich müsste mich nicht auf andere Funktionen umgewöhnen). Also wenn ich als Sprache in meiner Anwendung nur Deutsch und Englisch verwenden würde, wäre es eigentlich ziemlich sinnfrei oder?

    Ich glaub irgendwas wollte ich noch fragen, fällt mir jetzt aber gerade nicht mehr ein... 😉 Naja, nochmal vielen Dank bis hierhin! 🙂



  • error2kxml schrieb:

    Wäre es *ganz schlimm* wenn ich auf Unicode verzichten würde und stattdessen im Ansi (?) Modus kompiliere? Also ich sehe jetzt für mich eigentlich keine Notwendigkeit, den asiatischen Markt zu bedienen und es wäre dann wohl einfacher, ohne die Makros usw. (Und ich müsste mich nicht auf andere Funktionen umgewöhnen). Also wenn ich als Sprache in meiner Anwendung nur Deutsch und Englisch verwenden würde, wäre es eigentlich ziemlich sinnfrei oder?

    Also ob es einfacher ist ohne diese Makros...naja Ansichtsache, das ist nur ein bisschen Tipparbeit 😉 . Aber denke auch nicht, dass Deine Programm für den asiatischen Markt sind 😃 .


Anmelden zum Antworten