Warum gibt es untersch. API-Funktionen?
-
Manche API-Funktionen sind doppelt - z.B.:
AddAtomA@4
AddAtomW@4ich denke A steht für Alias - was bedeutet W und wieso gibt es so soft 2 Funktionen?
-
Das ist nur der Unterschied zwischen ANSI und Unicode.
Siehe Petzold, 2. Kapitel!
-
A steht für ANSI und W für WideChar. Das sind zwei Varianten derselben Funktion. Die A-Variante arbeitet mit ASCII-Strings und die W-Variante mit wide chars, also Unicode. Unter windows 2000/XP rufen die A-Versionen meistens nach einer Umwandlung die W-Versionen auf. unter Win9x gibts die meisten API-Calls nur in der A-Version.
Programme benutzen die W-Version sobald du beim Kompilieren das Symbol UNICODE (oder wars _UNICODE oder beide?) definierst, ansonsten die A-Version.
Hoffe das Hilft
-
A steht für Ascii, und W für Widechar.
Widecharacters sind mit 2 Byte, Ascii mit 1 Byte codiert. Bei neueren Windows Versionen (ab win 2000?) wird intern mit dem Unicode Zeichensatz gearbeitet.
D.h. Bei Aufruf der *A Funktion wird der String in Unicode umgewandelt, und dann die *W Funktion aufgerufen.In der Header Datei ist AddAtom dann etwa definiert
#ifdef UNICODE define AddAtom AddAtomW #else define AddAtom AddAtomA #endif
-
Das A sollte eigentlich für ANSI (American National Standards Institute) stehen (siehe Petzold, dt. 5. Auflage, S.38).
Hier ein Ausschnitt aus MSDN:
Als Beispiel werden im folgenden die beiden Beschreibungen für die Funktion SetWindowText in der Sprache C aufgeführt. Sie werden bemerken, daß die erste Beschreibung die Funktion als SetWindowTextA definiert, wobei das nachgestellte „A“ sie als ANSI-Funktion kennzeichnet:
BOOL
WINAPI
SetWindowTextA(
HWND hWnd,
LPCSTR lpString);Die zweite Beschreibung definiert die Funktion als SetWindowTextW, wobei das nachgestellte „W“ für „Wide“ (Breit) diese als Unicode-Funktion kennzeichnet:
BOOL
WINAPI
SetWindowTextW(
HWND hWnd,
LPCWSTR lpString);[ Dieser Beitrag wurde am 04.06.2003 um 22:19 Uhr von Erhard Henkes editiert. ]