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

相关文章:

  • 2021-12-29
  • 2021-07-16
  • 2022-12-23
  • 2021-07-31
  • 2021-12-26
  • 2018-09-06
猜你喜欢
  • 2021-11-28
  • 2021-11-15
  • 2022-01-08
  • 2021-04-09
  • 2021-05-30
  • 2022-12-23
相关资源
相似解决方案