Warum funktioniert MAKEINTRESOURCE ()?

Das Makro ist definiert als:

#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))

Wie kommt es, dass dies verwendet werden kann, um entweder eine Ressourcen-ID (ein 16-Bit-Int ohne Vorzeichen) oder ihren Namen (einen Zeiger auf ein Array von Zeichen) anzugeben? Beschränkt dies den Adressraum (auf einem 32-Bit-System) nicht effektiv auf 16-Bit? Ansonsten, woher weiß das System, ob ich eine ID oder einen Namen verwende?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage