无法将struct **转换为const POINT *作为参数?

时间:2010-08-30 03:19:27

标签: c++ winapi

大家好我使用winapi并且我想在3d中做一个正方形我用一个函数来定义它们并且我已经尝试了3个函数但是我不能让它们工作我在3&em中得到相同的错误&gt ;。<

错误说

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)'|

当使用多边形函数或多边形或折线

时,错误指向

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);
}

2 个答案:

答案 0 :(得分:3)

您从全局命名空间传递POINT3D而不是POINT的POINT版本。结构是相同的只是演员。另外,你传入的数组数组不是单个数组。

所以我建议你重新启动API以查看它需要什么 - 比如

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

答案 1 :(得分:0)

Polygon以及您正在尝试的其他功能是2D GDI功能。它们并非真正用于表示3D图形。当然,使用GDI可以获得理想的效果,但是如果你要进行大量3D工作,那就是错误的工具,看起来就像你一样。

您可能希望研究DirectX或其他一些旨在处理3D图像的框架。