CombineRgn无法正常工作

Him*_*dri 0 delphi winapi region

我有两个地区说rgn1rgn2.我想使用CombineRgn函数将它们组合在一起.所以我写 -

if CombineRgn(rgnMain,rgn1,rgn2,RGN_OR) = error then
         ShowMessage('error'); 
Run Code Online (Sandbox Code Playgroud)

它的返回值为ERROR.

我测试过rgn1和rgn2是正确的区域.
谢谢.

Del*_*ics 6

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

rgnMain := CreateRectRgn(0, 0, 0, 0);
if CombineRgn(rgnMain, rgn1, rgn2, RGN_OR) ... then
  // etc
Run Code Online (Sandbox Code Playgroud)

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

if CombineRgn(rgn1, rgn1, rgn2, RGN_OR) ... then
  // etc
Run Code Online (Sandbox Code Playgroud)