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

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位上编译,错误是:
无法将参数“1”的“POINT()[5]{aka tagPOINT()[5]}”转换为“const POINT*{aka const tagPOINT*}”,将其转换为“HRGN\uuuu*CreatePolygonRgn(const POINT*,int,int)”
如果有人能发现我的错误。谢谢。

最佳答案

CreatePolygonRgn()需要指向数组中第一个POINT的指针,以及数组中的项数。但是您要给它传递一个指向数组本身的指针,而不是它的第一个元素。您可以:
在应用&运算符之前索引到数组的第一个元素:

CreatePolygonRgn( &ptVertex[0], 5, ALTERNATE )

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

关于c++ - CreatePolygonRgn和const POINT *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38000598/

10-13 05:23