多边形窗口
闻怡洋
当你看腻了矩形窗口后,你想不想改变你窗口的形状呢?你需要做的很简单。
产生一个CRgn对象,并调用int CWnd::SetWindowRgn( HRGN hRgn, BOOL
bRedraw );
下面将讲述具体方法:
在窗口的OnCreate中(窗口必须为WS_POPUP风格,其它的我没有试过)下面的代码将创建一个三角形的窗口。
int ctW::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
POINT pt[3];
pt[0].x=100;
pt[0].y=20;
pt[1].x=0;
pt[1].y=150;
pt[2].x=180;
pt[2].y=150;
m_rgn.CreatePolygonRgn(pt,3,WINDING);
SetWindowRgn(m_rgn,1);
// TODO: Add your specialized creation code here
return 0;
}
CWnd::GetWindowRgn(...)将通过返回值告诉你该多边形是否为一个单独的矩形。
请注意该RGN坐标是以原来窗口的矩形为零点坐标的而不是以屏幕坐标为零点坐标。你可以利用CRgn::CombineRgn(...)将多个RGN并起了形成自己所需要的形状。