GDI+的一段代码,该怎么解决
GDI+的一段代码
其中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();
}
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();
}