系统执行时,调用扫描仪,通过API返回一个void*的指向文件影像的指针类型,我想问的是如何将此void* 类型转换为CString类型?如果不可以,那如何将BYTE*类型转换为CString类型呢?大家帮帮我,这个问题折腾我几天了

解决方案 »

  1.   

    extern BYTE *a;
    CString str(a);
      

  2.   

    如果你的void*的确指向字符串,可以强制转换void* lpvoid;
    CString string((LPCTSTR) lpvoid);
      

  3.   

    "void*的指向文件影像的指针类型" ?
    void* 指向的是图像? 那可不能直接转成CString, 涉及到位图处理,字符识别的问题.
      

  4.   

    同意楼上。
    但是楼主注意前提啊,呵呵:你的void*的确指向字符
      

  5.   

    CString str;
    void *p;
    str.Format("%s",(char*)p);
      

  6.   

    CString ss;
    BYTE bb[10];
    ss.Format("%s",(char*)bb);
      

  7.   

    强制转换成char的数组 然后format不管他是不是字符串 不过很大程度是乱码
      

  8.   

    转化成char * 可能比较好
      

  9.   

    如果我void*指向的是一个图像,那么我应该把它转换成什么类型的数据,封装成COM,作为接口的返回值,供C#程序调用呢?
      

  10.   

    楼主是不是想要文字识别,OCR啊
      

  11.   

    void *转CString
    void *a;
    b = (char *)a;
      

  12.   

    楼主大概是想把void*指向的内存区里的东东, 传到其他调用进程里吧.
    不管是字串,还是图形数据.?
      

  13.   

    jyc_nj(老蔣) :
    还是你了解我的意图啊,感激涕零在void*里指向的是内存区里的文件影像,我想在COM封装的接口中将此影像传给c#程序供调用,现在的问题是我不知道该把COM中的void*类型封装成什么返回类型,COM是用Visual C++开发的
      

  14.   

    把文件影像封装成CString类型是不好的选择,因为CString事实上仍只是封装了以'\0'结束的字符串。没办法的话,楼主不妨自己建一个类似CString的类,封装BYTE型的动态数组,并注意有成员标识该数组的大小——根据需要,这个类可以很简单,但需要重载其=操作符并实现拷贝构造函数。
      

  15.   

    用VARIANT传递,任何语言都可以使用
      

  16.   

    bluwindhrt(蓝风) :有例子吗?或者简单地说明一下如何实现?haizhiyu(海之鱼) :
    如何用VARIANT转换呢?有没有相应的例子吗?
      

  17.   

    记起来了,有现成的类可以用呢:CByteArray,去看看MSDN吧!
      

  18.   

    你的COM是在同一进程中使用么?
    觉得同一进程中的话, 直接传地址进去,虽不规范但好象也不会错.
    不同进程就麻烦了.看有没有人能指点一下.
      

  19.   

    CString str;
    void *p;
    str.Format("%s",(char*)p);