HRGN a,b,c;
b=CreateRectRgnIndirect(&(RECT) rect);
c=CreateRectRgnIndirect(&(RECT) rect);
这里b、c是我要创建的两个区域,然后我想合并他们:
我的错误用法:
iRgnType=CombineRgn(a,b,c,RGN_OR);
看上去没什么错误,起码我当初这么认为...后来比对区域的时候老是出错,检查又检查发现时这个里出错了,这个函数返回0,error,为什么错误呢,我躺在床上猛然想一起书上的一句话:这三个区域句柄都必须有效..又联想到树上的例子,顿时恍然大悟。我这里的a,是无效的,它只是声明了一次,所以,知道错哪里就好解决了。
只要加个 a=CreaterectRgnIndirect(1,1,0,0);给它创建个区域很小的一个,那么这个区域句柄就有效了!
b=CreateRectRgnIndirect(&(RECT) rect);
c=CreateRectRgnIndirect(&(RECT) rect);
这里b、c是我要创建的两个区域,然后我想合并他们:
我的错误用法:
iRgnType=CombineRgn(a,b,c,RGN_OR);
看上去没什么错误,起码我当初这么认为...后来比对区域的时候老是出错,检查又检查发现时这个里出错了,这个函数返回0,error,为什么错误呢,我躺在床上猛然想一起书上的一句话:这三个区域句柄都必须有效..又联想到树上的例子,顿时恍然大悟。我这里的a,是无效的,它只是声明了一次,所以,知道错哪里就好解决了。
只要加个 a=CreaterectRgnIndirect(1,1,0,0);给它创建个区域很小的一个,那么这个区域句柄就有效了!
还有个大亏是我没仔细看书的后果。。。发现好多血的教训都是因为我看书不仔细。。。哎,快就没质量- -!
没有图.
这个耗费我近两个小时,因为这个错误是(程序运行)十几次之后才发生。。。当时我去比对链表的数据是不是哪里出错了。。。。
最后又去看看是不是有什么句柄没删除,都没解决。。。。最后实在无奈了,看见我的一个数组:HGRN next[4];这个区域数组.然后它的删除操作是DeleteObject(next);
一开始我并认为错了.因为我记忆中书上是这么做的,然后我尝试分开Delete Delete[0].....Delete[3],错误解决了!!!!
然后我翻翻书去看.看走眼了书上的hGrnClip 和hGrnTemp 我给看混了,书上实例删除时用for来吧数组的区域句柄都删除。。。