ctypes assumes that a function returns a signed int unless you tell it otherwise. Set the function restype to an unsigned value:
from ctypes import *
windll.user32.GetDC.restype = c_void_p
hDC1 = windll.user32.GetDC(None)
ctypes doesn't know anything about parameters and return values, just the entry point of the function. It takes a guess but lets you override with argtypes and restype.