DWORD
-
Ich hatte grad das Problem, dass ich POINT in DWORD umwandeln musste.
In einem anderem Forum steht das:DWORD MakeDWord(int LoWord, int HiWord) { return ((HiWord * 0x10000) | (LoWord & 0xFFFF)); }
Könnte mir mal bitte jemand erklären was da steht? Es funktioniert, habs ja
schon probiert, aber ich kapier es nicht.
-
OK:
DWORD = 32 Bit!
// ____________________ //| | | //| 16 Bit | 16 Bit | //|__________|_________| // High Low
Wir setzen LoWord = 1 und HiWord = 1, d.h:
HEX: 0001 0001
DEZ: 65537
BIN: 0000 0000 0000 0001 | 0000 0000 0000 0001Das Ergebnis muss also 65537 sein.
// & Verknüpfung -> AND // 00 | 0 // 01 | 0 // 10 | 0 // 11 | 1
// | Verknüpfung -> OR // 00 | 0 // 01 | 1 // 10 | 1 // 11 | 1
LoWord & 0xFFFF
0000 0000 0000 0001
1111 1111 1111 1111 (& verknüpft)
-------------------
0000 0000 0000 0001HiWord * 0x10000 = 0001 0000 0000 0000 0000
(HiWord * 0x10000) | (LoWord & 0xFFFF)
0001 0000 0000 0000 0000
0000 0000 0000 0000 0001 ( | verknüpft)
------------------------
0001 0000 0000 0000 0001d.h. HEX 10001 oder DEZ 65537
passt
Für gewöhnlich habe ich was besseres zu tun, aber diesmal hat's mich ebenfalls interessiert
MfG
-
* 0x10000
ist gleich
<<16