SwordMaster Geschrieben 22. Juli 2008 Teilen Geschrieben 22. Juli 2008 Hallo Zusammen, ich habe mir seit längerer zeit eine Klassensammlung zusammengestellt wo ich Win32 - Api Methoden gekapselt habe. Diese Klassensammlung ist in C++ (mit MFC unterstützung) geschrieben. Das ganze verwende ich jetzt in C# wieder. Dazu schreibe ich mir managed c++ wrapperklassen. => Die Original C++ Klasse hat eine Methode "SetWindowText". Wenn jetzt der Wrapper diese Methode aufruft, schlägt mir die Hilfe plötzlich "SetWindowTextA" als Methodennamen vor :confused:. Wie gibts denn sowas? WEnn meine C# Methode die SetWindowText des Wrappers aufrufen will, dann heißt die SetWindowText des Wrappers plötzlich "SetWindowTextW"? Kann mir das jemand erklären? Viele Grüße Stefan P.S. Wenn ich die Methodennamen in "SetTHEWindowText" umbennen oder sowas, dann gehts.. aber ich würde trotzdem 1. gerne einen grund wissen und 2. meine Methodennnamen beibehalten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 22. Juli 2008 Teilen Geschrieben 22. Juli 2008 Es gibt eine WinAPI-Funktion namens SetWindowText, d.h eigentlich gibt es die nicht . Es gibt die Multi-Byte-Variante (SetWindowTextA) und die Wide-Character-Variante (SetWindowTextW). SetWindowText ist nur ein Präprozessorsymbol, das je nachdem, wie die UNICODE-Einstellungen im C++-Projekt definiert sind, entweder auf SetWindowTextA oder SetWindowTextW verweist. Und da Präprozessormakros dumm sind und keine Scopes beachten, passiert diese Ersetzung auch in deinem Code, sobald du die Windows-Header einbindest. Das gilt übrigens für praktisch alle WinAPI-Funktionen, die mit C-Strings arbeiten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.