设置窗体任意形状

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 );

posted @ 2012-03-22 13:28  tianyuanmuge  阅读(162)  评论(0编辑  收藏  举报