Achtung Syntaxfehler:
"WCHAR * Buffer[5];" soll/muss zu 99,9% "WCHAR Buffer[5]" heißen!
Du willst ja sicher 4Zeichen + abschließende "NULL" darin speichern(LB_GETTEXT)... dazu brauchst du ein eigentlich "ArrayOfWChar" und kein "ArrayOfWCharPointers"... das es funktioniert liegt daran, 5 Pointer zufällig mehr Speicher reservieren wie du für 5Zeichen brauchst und du dann irgendwie auch noch passend einen "cast" machst.
Denke mal drüber nach und versuche zu verstehen, warum es obwohl falsch doch in diesem Fall so funktioniert...