下面cdc使用有有关问题吗?

下面cdc使用有问题吗???

//类成员
CDC m_bgd;
CBitmap map;
CBitmap* oldmap;



BOOL CXPMUIDlg::OnInitDialog()
{
CDialog::OnInitDialog();

CDC* pdc = GetDC();
m_bgd.CreateCompatibleDC(pdc);
map.CreateCompatibleBitmap(pdc,400,400);
oldmap = m_bgd.SelectObject(&map);
m_bgd.FillSolidRect(0,0,400,400,RGB(32, 178, 170));
//m_DGsin.SetBackDC(m_bgd.m_hDC);
ReleaseDC(pdc);
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}




BOOL CXPMUIDlg::DestroyWindow()
{
// TODO: 在此添加专用代码和/或调用基类
oldmap = m_bgd.SelectObject(oldmap);
// TODO: 在此添加额外的初始化代码
ReleaseDC(&m_bgd);
return CDialog::DestroyWindow();
}

------解决方案--------------------
没什么大问题
不过m_bgd不用ReleaseDC
------解决方案--------------------
DeleteDC
    由 CreateDC、CreateCopatibleDC 函数创建的设备上下文环境,只 能使用DeleteDC来释放。

 
ReleaseDC
    如果一个设备上下文环境 的句柄,是通过调用GetDC得到的,那么应用程序不能删除设备上下文设备,而且还 会报错,像我前面的错误那样,应该用Release函数来释放。


DeleteObject
    DeleteObject多是用来删除一个逻辑笔、画笔、字体、位图、区域或者调色板等等, 并且释放所有与该对象有关的系统资源,在对象被删除之后,指定的句柄也就随之消失了。 Deleteobject与SelectObject结合着使用,在 GDI对象使用完之后,释放GDI对象所关联的内存。需要注意的是: CGdiObject类的对象所关联的内存不能够使用Deleteobject函数 来释放。