注册 登录
编程论坛 VC.NET论坛

帮个忙看看?

泽蕖 发布于 2004-07-10 21:34, 2163 次点击

来了竟然不见人,不是在打击我的积极性吗?

尽管如此,帖我还是要发的:

以下语句想创建一个非规则区域: CRect rcdlg; GetClientRect(rcdlg); CRgn rgn1,rgn2; rgn1.CreateEllipticRgn(0,0,rcdlg.Width()/3,rcdlg.Heigh()/3); //创建一个客户区1/3大小为边界的椭圆 rgn2.CreateEllipticRgn(0,0,rcdlg.Width(),rcdlg.Height()); //创建一个客户区大小为边界的椭圆 m_rgn.CombineRgn(&rgn1,&rgn2,RGN_DIFF);//问题就出在这一行,请问是为什么啊? //取得他们的非公共区域rgn1-rgn2 ::SetWindowRgn(GetSafeHwnd(),(HRGN)m_rgn,TRUE);

2 回复
#2
wxj5053822004-12-11 16:42
有人的,我也是刚来的,有点熟悉,不过我是搞口的,我可以发到信箱拿回去研究一下,我是邮箱是wxj505382@,有了发给你。
#3
happylin99882004-12-17 10:05
CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn( 0, 0, 50, 50 ));
VERIFY(rgnB.CopyRgn( &rgnA ));
int nOffsetResult = rgnB.OffsetRgn( -75, 75 );
ASSERT( nOffsetResult != ERROR || nOffsetResult != NULLREGION );

VERIFY(rgnC.CreateRectRgn( 0, 0, 1, 1));
int nCombineResult = ( &rgnA, &rgnB, RGN_AND );
ASSERT( nCombineResult != ERROR || nOffsetResult != NULLREGION );

CBrush brA, brB, brC;
VERIFY(brC.CreateHatchBrush( HS_FDIAGONAL, RGB(0, 0, 255) )); // Blue
VERIFY(pDC->FillRgn( &rgnC, &brC ));
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  // rgnA Red
VERIFY(pDC->FrameRgn( &rgnA, &brA, 2, 2 ));
VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));  // rgnB Green
VERIFY(pDC->FrameRgn( &rgnB, &brB, 2, 2 ));
1