2010-08-30 76 views
2

嗨大家即时通讯使用winapi和我想做一个在三维正方形即时通讯定义的要点,以使他们与功能和我一直在尝试3个功能,但我不能让他们工作,我得到同样的错误在他们3。 <不能将struct **转换为const POINT *作为参数?

的错误说

In member function `void Cube::Show(void)':| 
    cannot convert `const Cube::Show()::POINT3D**' to `const POINT*' 
    for argument `2' to `BOOL Polygon(HDC__*, const POINT*, int)'| 

错误使用或者多边形功能或polybezier或折线指向时,即时通讯

PLZ任何帮助将真正理解

void Cube::Show(void) 
{ 
    typedef struct point3d 
    { 
     double x; 
     double y; 
     double z; 
    } POINT3D; 

    POINT3D Face1[] = { 
    { 20.0,-20.0,-20.0}, 
    {-20.0,-20.0,-20.0}, 
    {-20.0, 20.0,-20.0}, 
    { 20.0, 20.0,-20.0} 
    }; 
    POINT3D Face2[] = { 
    {-20.0,-20.0,-20.0}, 
    {-20.0,-20.0, 20.0}, 
    {-20.0, 20.0, 20.0}, 
    {-20.0, 20.0,-20.0} 
    }; 
    POINT3D Face3[] = { 
    { 20.0, 20.0, 20.0}, 
    {-20.0, 20.0, 20.0}, 
    {-20.0,-20.0, 20.0}, 
    { 20.0,-20.0, 20.0} 
    }; 
    POINT3D Face4[] = { 
    { 20.0,-20.0, 20.0}, 
    { 20.0,-20.0,-20.0}, 
    { 20.0, 20.0,-20.0}, 
    { 20.0, 20.0, 20.0} 
    }; 
    POINT3D Face5[] = { 
    { 20.0,-20.0, 20.0}, 
    {-20.0,-20.0, 20.0}, 
    {-20.0,-20.0,-20.0}, 
    { 20.0,-20.0,-20.0} 
    }; 
    POINT3D Face6[] = { 
    { 20.0, 20.0,-20.0}, 
    {-20.0, 20.0,-20.0}, 
    {-20.0, 20.0, 20.0}, 
    { 20.0, 20.0, 20.0} 
    }; 

    POINT3D *Faces[] = {Face1,Face2,Face3,Face4,Face5,Face6}; 
Rectangle(this->_hdc,this->DrawArea.left,this->DrawArea.top,this->DrawArea.right,this->DrawArea.bottom); 

    Polygon(_hdc,Faces,6); 
    /*BeginPath(_hdc); 
    PolyBezier(Faces,6); 
    EndPath(_hdc);*/ 
    //Polyline(_hdc,Faces,6); 
} 
+0

我们需要比这更多的信息。什么是_hdc?以及Rectangle()和Polygon()如何定义?另外,我非常确定'POINT3D * Faces [] = {Face1,Face2,Face3,Face4,Face5,Face6}'是无效的语法。你为什么使用一个结构来代替你的点而不是类? – Falmarri 2010-08-30 03:29:05

+0

呵呵,我认为结构只是更容易为这种情况下,但我也可以使用该和多边形和矩形是winapi函数已经宣布我没有让他们:S和HDC以及它的HDC的WINAPI – Makenshi 2010-08-30 03:31:26

+0

以及我可以只使用窗户。 h库,所以我不知道是否回答你的问题,所以即时通讯尝试制作3d-2d的东西lol – Makenshi 2010-08-30 03:35:24

回答

3

你传入POINT3D的POINT版本,而不是来自全局命名空间的POINT。这些结构是相同的只是施放。另外,你传入的数组不是数组。

所以我建议你revist的API,以了解它需要什么 - 像

Polygon(_hdc,((POINT *) (Faces[0])),6) perhaps 
+2

只是这样工作,感谢你非常严重! – Makenshi 2010-08-30 03:29:10

+0

不客气。 – 2010-08-30 03:37:00

0

Polygon和你想的其他功能2D GDI函数。它们并非真正用于表示3D图形。当然,使用GDI可以获得所需的效果,但如果您要做大量的3D工作,它看起来就像是一个错误的工具。

您可能想看看DirectX或其他设计用于处理3D图像的框架。

+0

是的,这将是很容易,但它的作业,所以我不能使用opengl或directx>的一部分。< – Makenshi 2010-08-30 03:37:57