|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- HRGN hrgn1 = CreateRectRgn(10, 10, 100, 100);//创建矩形区域
- HRGN hrgn2 = CreateEllipticRgn(150, 150, 250, 250);//创建椭圆区域
- HRGN hrgn=NULL;
-
- int n1=::CombineRgn(hrgn, hrgn1, hrgn2, RGN_OR); //将两个区域组合为一个新区域
- /*
- 参数1:HRGN hrgnDest 目标区域句柄
- 参数2:HRGN hrgnSrc1 源区域1句柄
- 参数3:HRGN hrgnSrc2 源区域2句柄
- 参数4:int fnCombineMode 两个源句柄的组合方式标志
- RGN_AND=1 区域交集
- RGN_COPY=5 将源区域1复制给目标区域
- RGN_DIFF=4 求不在源区域2的源区域1
- RGN_OR=2 区域并集
- RGN_XOR=3 区域的异或,即去除两个源区域重叠的部分
- 返回值:NULLREGION=1 空区域
- SIMPLEREGION=2 简单矩形区域
- COMPLEXREGION=3 复杂的区域,不是简单的矩形
- ERROR=0 根本就没有创建目标区域,失败了
- */
复制代码
我的问题:n1的返回值是0, 为何没有创建目标区域 ?
根据您提供的代码,可以看出问题出在了 hrgn 参数上。在调用 CombineRgn 函数时,您将 hrgn 参数赋值为 NULL ,这意味着您没有为它分配内存空间。因此, CombineRgn 函数无法将两个区域组合成一个新区域,并且返回值为 ERROR 。要解决这个问题,您需要在调用 CombineRgn 之前为 hrgn 参数分配内存空间,例如: HRGN hrgn = CreateRectRgn(0, 0, 0, 0); 。这样, CombineRgn 函数就可以将两个区域组合成一个新区域,并且返回值将是组合后区域的类型。
|
|