GDI+的一段代码,该怎么解决

GDI+的一段代码

void CPngButton::SetPngRegion(int index)
{

CDC * p = this->GetWindowDC();
Graphics g(p->m_hDC);
HRGN hrgn = rgn[index]->GetHRGN(&g);  
CRgn * crgn = CRgn::FromHandle(hrgn);  
SetRgn(index, crgn); 
ReleaseDC(p);
DeleteObject(hrgn);
}
void CPngButton::SetRgn(int nIndex, CRgn *region)  
{  
m_rgn[nIndex] = ::CreateRectRgn(0, 0, 0, 0);   
CombineRgn(m_rgn[nIndex], region->operator HRGN(), NULL, RGN_COPY);  
m_trgn[nIndex] = ::CreateRectRgn(0, 0, 0, 0);  
CombineRgn(m_trgn[nIndex], region->operator HRGN(), NULL, RGN_COPY);  



其中rgn[]是已经读取资源的Regin *rgn[]。不懂为什么GetHRGN后获取了HRGN 后又得弄成CRgn,然后又->operator HRGN?????

------解决方案--------------------
就是 把 HRGN hrgn 搞透明了 (你 看不到了)
使用时 不必 考虑 HRGN hrgn
------解决方案--------------------
你再OnPaint函数中调用MoveWindow,只要一刷新就MoveWindow该对象m_DlgTest关联的对话框?

去掉基类的CDialogEx::OnPaint()调用。
写成这样试试
void CPngBTNDemoDlg::OnPaint()
{
 CPaintDC dc(this);
 m_DlgText.MoveWindow();
}