0

我有两个区域说rgn1rgn2。我想使用 CombineRgn 函数将它们结合起来。所以我写 -

if CombineRgn(rgnMain,rgn1,rgn2,RGN_OR) = error then
         ShowMessage('error'); 

它的返回值为 ERROR。

我已经测试过 rgn1 和 rgn2 是正确的区域。
谢谢你。

4

1 回答 1

6

你也初始化了 rgnMain吗?有点违反直觉(但如CombineRgn() 文档中所述),目标/输出区域必须存在才能接收两个输入区域的所需组合,但它可以是一个完全空的区域:

rgnMain := CreateRectRgn(0, 0, 0, 0);
if CombineRgn(rgnMain, rgn1, rgn2, RGN_OR) ... then
  // etc

如果您希望避免创建一个完全独立的区域,那么可以将输入区域之一指定为目标区域(根据定义,输入区域必须是现有的有效区域,这样就避免了必须单独初始化一个新的目的地区域):

if CombineRgn(rgn1, rgn1, rgn2, RGN_OR) ... then
  // etc
于 2010-06-22T06:16:21.173 回答