All are DC. HDC is the original DC handle. The first parameter of many APIS is an HDC type. For exampleHDC hDC =: GetDC (m_hWnd);: MoveToEx (hDC, 0,100, NULL);: LineTo (hDC,);: ReleaseDC (m_hWnd, hDC );
In MFC, a CDC is added to encapsulate an API as a class for operation. So in MFC
CDC dc = GetDC (); dc. MoveTo (0, 0); dc. LineTo (0,100); this-> ReleaseDC (& dc );
However, this is not enough, because the CDC requires you to release it by yourself, and there is another CClientDC in all the MFC, so that you can:
CClientDC dc (this); dc. MoveTo (0, 0); dc. LineTo (0,100 );
The destructor of CClientDC will release itself.
DC is neither an object nor a device context.
Like CClientDC, there are also CWindowDC and CPaintDC, but their painting ranges are different.
But in the end, it is only some encapsulation of HDC. You can directly reference m_hDC in the CDC class. This is the original HDC handle.