Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#4

Re: Was ist der unterschied zwischen GetModuleHandle,GetModu

  Alt 21. Jul 2005, 18:06
Luckies Kommentar leicht korrigiert:
Unter NT ff. Gibt es für fast jede Funktion, die eine Zeichenkette als Parameter entgegennimmt oder zurückliefert, immer noch eine UniCode (WideString) Version.
... Gegenbeispiel: GetProcAddress()

Zitat von Luckie:
Wobei die Ansi Versionen leer sind und nur die UniCode Versionen aufrufen. Dies hat kompatibilitäts Gründe.
Irrtum. A.) man kann kaum von leer sprechen, denn sie tun was und B.) rufen sie oft garnicht eine Unicode-Version sondern "Zwischenfunktionen" auf. Das kann man am besten mit einem Disassembler oder Debugger und den Symbolen von MS sehen.

Übrigens, @Arnulf, es gibt mehrere Unicode-Standards, daher muß man eingrenzen, daß wir bei Windows NT ff. nur vom 16bittigen Unicode-Zeichensatz reden. Es gibt noch solche mit Variabler Zeichenbreite und solche mit mehr als 16bit (namentlich mit 32bit).
Unicode ermöglicht es im Gegensatz zu dem Codepagemodell, welches mit ANSI (und den Geschwisterchen) verfolgt wurde, mehrere verschiedene Zeichensätze (zB Hebräisch, Chinesisch und Russisch) zusammen darzustellen. Bei ANSI ist immer nur eine dieser Codeseiten aktiv!

Unter C/C++ werden die Funktionen je nach Präprozessorschalter als A oder W eingebunden. Der Name selbst wird vom Präprozessor als Makro ohne A/W umdefiniert. So wird es sehr leicht ein Programm sowohl als Unicode- als auch als Ansi-Version zu kompilieren.
  Mit Zitat antworten Zitat