none
Windows2008下 ASP调用COM组件(GDI+)失败 RRS feed

  • 问题

  • 项目中一个组件,在Windows2003以前的Windows版本中,ASP调用时,能够正常动作。

    在Windows2008中,相同的参数,ASP调用失败。

     

    组件的主要工作是调用GDI+的API,根据传入的参数,在服务器端(Windows2008)的指定目录下保存图片。

     

    当前调查的状况:

    源码:

    Bitmap image(bitmap, NULL);

    Status stat;

     

    //下行代码执行后,stat = 2(InvalidParameter)

    stat = image.save(L“C:\\Temp\\test.gif", &encoder, NULL);

    if(stat != 0)

    {

    return false;

    }

     

    经过很长时间的调查,仍然没有找到原因所在。

     

    不知是否与Windows2008的内核有关。

     

    **项目中还是用了其他的Com组件,都没有问题,唯独这一个有问题。

    2008年5月22日 4:15

答案

全部回复

  • 你传递给save方法的encoder参数正确吗?

    2008年5月26日 6:01
  • encoder参数是正确的(image/gif)。

     

    用C++调用组件时,使用的是相同的参数。

     

    现在估计是CreateDC的问题,因为当

    将创建DC的方法:

     

    HDC hDC = CreateDC(L"DISPLAY", NULL, NULL, NULL);

    HDC hSrcDC = hDC;

     

    更该为: HDC hSrcDC = CreateCompatibleDC(hDC);

     

    后,再次在ASP中调用时,可以正常动作,图像能够正常生成。

    但是图像时黑白的,不是彩色的。

    2008年5月26日 6:21
  • CreateCompatibleDC默认创建的就是黑白的
    要select一个彩色的位图进去才行
    2008年7月24日 17:08
    版主