Äquivalente ich zu diesem Thema vor kurzem lief in und etwas Forschung tat und dachte, dass ich einige von dem, was dokumentieren würde ich hier gefunden.
zu starten, wenn MessageBox(...)
anrufen, sind Sie wirklich nur ein Makro aufrufen (für die Abwärtskompatibilität Gründen), die entweder MessageBoxA(...)
für ANSI-Codierung oder MessageBoxW(...)
für Unicode-Codierung ruft.
Also, wenn Sie in einem ANSI-String mit dem Standard-Compiler-Setup in Visual Studio weitergeben wollen, können Sie MessageBoxA(...)
stattdessen nennen:
#include<Windows.h>
int _stdcall WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,LPSTR lpszCmdline,int nCmdShow)
{
MessageBoxA(0,"Hello","Title",0);
return(0);
}
Die vollständige Dokumentation für MessageBox(...)
befindet sich hier: https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx
Und um zu erweitern, was @cup in ihrer Antwort sagte, könnten Sie das _T()
Makro verwenden und weiterhin verwenden MessageBox()
:
#include<tchar.h>
#include<Windows.h>
int _stdcall WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,LPSTR lpszCmdline,int nCmdShow)
{
MessageBox(0,_T("Hello"),_T("Title"),0);
return(0);
}
Das Makro _T()
macht die Zeichenfolge "Zeichensatz neutral". Sie können dies verwenden, um alle Zeichenfolgen als Unicode einzurichten, indem Sie vor dem Erstellen das Symbol _UNICODE
definieren (documentation).
Ich hoffe, diese Informationen helfen Ihnen und allen anderen, die dieses Problem haben.
gefunden Ihr Projektes Zeichensatz Einstellung prüfen (Projekteigenschaften, Eigenschaften Konfiguration , Allgemein, Zeichensatz). Es ist wahrscheinlich auf "Use Unicode" statt "Use Multi-Byte" eingestellt. – TypeIA
Sie führen Ihren Code auf einem Unicode-Betriebssystem aus. Sie sollten Unicode-Zeichenfolgen verwenden. Wie L "Hallo". Sie können die Uhr zurück auf 1991 stellen, aber es macht wenig Sinn C zu benutzen, wenn Sie das tun. –
@HansPassant oder wechseln Sie zu Multibyte. Die Windows-API ist so konzipiert, dass Sie entweder/oder] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd374089%28v=vs.85%29.aspx) verwenden können. Beachten Sie, dass "Multibyte" -Strings immer noch Unicode-Codepunkte codieren können. Daher muss diese Option nicht unbedingt "die Uhr auf 1991 zurückstellen". Perfekt korrekte, globalisierte, Unicode-fähige Anwendungen können mit Multibyte-Strings (statt Whole-Character-Strings) geschrieben werden. – TypeIA