[As with everything, I'm getting old, so my memory isn't as reliable as it should be.]
Think of it this way:
a DWORD is 4 bytes, Alpha, Red, Green, Blue and is usually in the form:
0xffffffff[255,255,255,255 opaque white]
Each 2 characters represents 1 of the bytes. The first ff is alpha=255. So to lower the red value like you explain there do something like
0xffffffff-0x00010000----------- 0xfffeffffor 255,254,255,255
just don't go below 0 or above 255, or else the 'carry' of addition/subtraction will cause one of the other colors to be changed. And -make sure- that there's 8 characters in the hex stuff that you assign/add/subtract. If there's not it will pad the number with zeroes causing bugs that are difficult to track down.