Wir leben in verschiedenen Welten. Deshalb kann ich nur begrenzt begreifen, was Du vorhast. In meiner Welt (32-Bit-Windows) ist der WRARAM einer WM_LBUTTONDOWN-Message ein 32-Bit-Integer. Und in LPARAM befinden sich die Koordinaten und kein
Handle.
IDC_ABOUT ist eine vorzeichenbehaftete Zahl. Wenn Du IDC_ABOUT an MakeLong übergibst, dann wird IDC_ABOUT als vorzeichenlose Zahl interpretiert(WORD).
Logisch, dass dann bei dem Empfänger auch eine vorzeichenlose Zahl ankommt.Es bleibt dem Empfänger überlassen die Zahl zu interpretieren.
Der Empfänger muss nun aus der vorzeichenlosen Zahl wieder eine vorzeichenbehaftete Zahl machen. Übersetzt heißt SmallInt(wP): Nimm die unteren 16 Bit und interpretiere das als
vorzeichenbehaftete Zahl. Die Übersetzung von LoWord(wP) heißt aber: Nimm die unteren 16 Bit und interpretiere das als
vorzeichenlose Zahl. Je nachdem ob es als vorzeichenbehaftete Zahl oder als vorzeichenlose Zahl interpretiert wird, werden Dir halt auch andere Werte angezeigt.