获取设备上下文有三种方法:BeginPaint、GetDC、GetWindowDC。
方法一:BeginPaint和EndPaint函数。BeginPaint函数适用在WM_PAINT消息中。使用这种方法可以自动将无效区域设为有效。默认情况下,调用BeginPaint函数时会自动将无效区域的背景擦出。但是要注意的时,我们调用InvalidateRect函数时,最后一个参数可以设置是否将无效区域的背景擦出,如果该参数设为TURE,那么将擦出,为FALSE,不擦出该背景。背景的擦出会用到我们在定义WNDCLASS结构体时使用的画刷。
方法二:GetDC和ReleaseDC函数。GetDC函数用于获取显示区域的设备句柄。这种方法获取的句柄可以在整个显示区域进行操作,而不像BeginPaint函数只能在无效区域操作。用GetDC获取的句柄时,如果存在无效区域,不会自动将无效区域设为有效,我们可以通过调用函数ValidateRect函数来将无效区域设为有效。
方法三:GetWindowDC和ReleaseDC函数。GetWindowDC函数获取整个窗口的设备上下文句柄。其他操作与方法二相同。