设置窗体任意形状
void CMainFrame::SetWindowShape()
{
::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,910,600,SWP_NOMOVE);
CPoint ptVertex[8];
ptVertex[0].x = 0;
ptVertex[0].y = 0;
ptVertex[1].x = 800;
ptVertex[1].y = 0;
ptVertex[2].x = 800;
ptVertex[2].y = 96;
ptVertex[3].x = 910;
ptVertex[3].y = 96;
ptVertex[4].x = 910;
ptVertex[4].y = 245;
ptVertex[5].x = 800;
ptVertex[5].y = 245;
ptVertex[6].x = 800;
ptVertex[6].y = 600;
ptVertex[7].x = 0;
ptVertex[7].y = 600;
HRGN hRgn=::CreatePolygonRgn(ptVertex,8,ALTERNATE);
::SetWindowRgn(*this, hRgn, TRUE);
::DeleteObject(hRgn);
}
或者把多个rgn合成一个
CRgn rgnA, rgnB, rgnC;
VERIFY(rgnA.CreateRectRgn( 50, 50, 150, 150 ));
VERIFY(rgnB.CreateRectRgn( 100, 100, 200, 200 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));
int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );