CreatePolygonRgn 和 const POINT *

CreatePolygonRgn and const POINT *

我只给你关于我的问题的台词。我不知道为什么这不能编译:

POINT ptVertex[5];

ptVertex[0].x = 180;
ptVertex[0].y = 80;
ptVertex[1].x = 100;
ptVertex[1].y = 160;
ptVertex[2].x = 120;
ptVertex[2].y = 260;
ptVertex[3].x = 240;
ptVertex[3].y = 260;
ptVertex[4].x = 260;
ptVertex[4].y = 160;

CreatePolygonRgn( &ptVertex, 5, ALTERNATE )

我在 DevC++ TDM GCC 64 位上编译,错误是:

cannot convert 'POINT ()[5] {aka tagPOINT ()[5]}' to 'const POINT* {aka const tagPOINT*}' for argument '1' to 'HRGN__* CreatePolygonRgn(const POINT*, int, int)'

如果有人能发现我的错误。谢谢

您传递的是五个数组的地址,而该函数需要一个元素的地址和长度。

CreatePolygonRgn() 需要指向数组中第一个 POINT 的指针,以及数组中的项目数。但是您向它传递了一个指向数组本身的指针,而不是它的第一个元素。您可以:

  1. 在应用 & 运算符之前对数组第一个元素的索引:

    CreatePolygonRgn( &ptVertex[0], 5, ALTERNATE )
    
  2. 只需完全删除 & 运算符,因为静态数组可以退化为指向其第一个元素的指针:

    CreatePolygonRgn( ptVertex, 5, ALTERNATE )