当我们玩游戏的时候,我们会发现它们的登录窗口是多么的炫彩,比如诛仙CF,DNF等这些都是对窗口的一些操作,下面来实现自己的美丽窗口。
static HRGN hRgnClip ;
HRGN hRgnTemp[6] ;
if (hRgnClip)
{
DeleteObject (hRgnClip) ;
}
hRgnTemp[0] = CreateEllipticRgn (0, cyClient / 3,
cxClient / 2, 2 * cyClient / 3) ;
hRgnTemp[1] = CreateEllipticRgn (cxClient / 2, cyClient / 3,
cxClient, 2 * cyClient / 3) ;
hRgnTemp[2] = CreateEllipticRgn (cxClient / 3, 0,
2 * cxClient / 3, cyClient / 2) ;
hRgnTemp[3] = CreateEllipticRgn (cxClient / 3, cyClient / 2,
2 * cxClient / 3, cyClient) ;
hRgnTemp[4] = CreateRectRgn (0, 0, 1, 1) ;
hRgnTemp[5] = CreateRectRgn (0, 0, 1, 1) ;
hRgnClip = CreateRectRgn (0, 0, 1, 1) ;
CombineRgn (hRgnTemp[4], hRgnTemp[0], hRgnTemp[1], RGN_OR) ;
CombineRgn (hRgnTemp[5], hRgnTemp[2], hRgnTemp[3], RGN_OR) ;
CombineRgn (hRgnClip, hRgnTemp[4], hRgnTemp[5], RGN_XOR) ;
SetWindowRgn(hWnd,hRgnClip,TRUE);
for (i = 0 ; i < 6 ; i++)
{
DeleteObject (hRgnTemp[i]) ;//对象用完要记得释放,否则CPU顶不住,PC会崩溃
}
上面的API 都是GDI里面的,完这些代码你会发现会显示一朵花一样的窗口(这些代码在WM_CREATE消息里执行),当然GDI+或者D3D、opengl之类的渲染效果会更好,这里不做介绍。