CClientDC有什么不一般用处吗?感觉有GetDC()获取CDC就可以了,求解

CClientDC有什么特别用处吗?感觉有GetDC()获取CDC就可以了,求解?
菜鸟最近在看MFC绘图,现在有个疑问,如题。
像CPaintDC是专门用在OnPaint消息的,而用到CClientDC的地方,我感觉都可以用GetDC()获取CDC*,
然后照样可以绘图(CClientDC有什么不一般用处吗?感觉有GetDC()获取CDC就可以了,求解莫笑),只是完了要手动ReleaseDC()而已,我把CClientDC转到定义,也没看到比CDC多了什么函数,难道仅仅是为省一个ReleaseDC吗,有这个必要吗?
void Ctest01Dlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CRect rt;
GetClientRect(&rt);

CClientDC dc(this);
dc.Ellipse(&rt);

CDC* pdc=GetDC();
pdc->Ellipse(&rt);
ReleaseDC(pdc);
//OnOK();
}
mfc gdi

------解决方案--------------------
GetDC需要ReleaseDC,在代码较复杂的情况下忘记了ReleaseDC怎么办?CClientDC在析构时会释放DC
------解决方案--------------------
CClientDC只是客户区dc  GetDC可以获取不同区域dc  其实就是CClientDC只是构造时调用GetDC(传入特定参数)

然后析构的时候ReleaseDC
------解决方案--------------------
你这个问题,如果你不用MFC的东西,用WIN32句柄和WIN32 API函数的话,就不至于如此纠结了

CClientDC就是对GetDC 和ReleaseDC 进行了一次封装,用起来方便些罢了
------解决方案--------------------
CClientDC = GetDC + ReleaseDC

仅此而已
------解决方案--------------------
CClientDC和CWindowDC相对,前者是客户区dc,后者是整个窗口dc。
在mfc中文手册中写道:
GetDC是获取客户区dc,
GetWindowDC是获取窗口dc,
------解决方案--------------------
没错,就是因为自动释放DC,仅此而已,方便。