大侠帮忙:如何实现将void*类型的数据转换为CString类型?顶者有分
系统执行时,调用扫描仪,通过API返回一个void*的指向文件影像的指针类型,我想问的是如何将此void* 类型转换为CString类型?
如果不可以,那如何将BYTE*类型转换为CString类型呢?
大家帮帮我,这个问题折腾我几天了
问题点数:100、回复次数:25Top
1 楼ginger(似水流年)回复于 2004-07-01 11:47:49 得分 2
markTop
2 楼gufengduyu(孤独的呆呆龙)回复于 2004-07-01 11:48:04 得分 5
extern BYTE *a;
CString str(a);Top
3 楼roger_ding(海天一色)回复于 2004-07-01 11:49:59 得分 10
如果你的void*的确指向字符串,可以强制转换
void* lpvoid;
CString string((LPCTSTR) lpvoid);Top
4 楼jyc_nj(老蔣)回复于 2004-07-01 11:50:43 得分 20
"void*的指向文件影像的指针类型" ?
void* 指向的是图像? 那可不能直接转成CString, 涉及到位图处理,字符识别的问题.Top
5 楼tangshiping(苇舞)回复于 2004-07-01 11:51:40 得分 5
同意楼上。
但是楼主注意前提啊,呵呵:你的void*的确指向字符Top
6 楼happyparrot(快乐鹦鹉)回复于 2004-07-01 11:52:16 得分 5
CString str;
void *p;
str.Format("%s",(char*)p);Top
7 楼xdljf(hunter)回复于 2004-07-01 11:53:09 得分 10
CString ss;
BYTE bb[10];
ss.Format("%s",(char*)bb);
Top
8 楼tianjieshui(天接水)回复于 2004-07-01 11:55:49 得分 5
强制转换成char的数组 然后format不管他是不是字符串 不过很大程度是乱码Top
9 楼dhbo(沉默的石头)回复于 2004-07-01 12:32:19 得分 2
转化成char * 可能比较好
Top
10 楼lbzq(longbow)回复于 2004-07-01 12:40:54 得分 2
upTop
11 楼priscill(priscill)回复于 2004-07-01 12:45:49 得分 0
如果我void*指向的是一个图像,那么我应该把它转换成什么类型的数据,封装成COM,作为接口的返回值,供C#程序调用呢?Top
12 楼xiaoqiqixiao(七七)回复于 2004-07-01 13:13:15 得分 2
楼主是不是想要文字识别,OCR啊Top
13 楼sailor_2002(我心依旧)回复于 2004-07-01 14:04:22 得分 2
void *转CString
void *a;
b = (char *)a;
Top
14 楼jyc_nj(老蔣)回复于 2004-07-01 14:05:54 得分 10
楼主大概是想把void*指向的内存区里的东东, 传到其他调用进程里吧.
不管是字串,还是图形数据.?Top
15 楼priscill(priscill)回复于 2004-07-01 18:08:32 得分 0
jyc_nj(老蔣) :
还是你了解我的意图啊,感激涕零。。。
在void*里指向的是内存区里的文件影像,我想在COM封装的接口中将此影像传给c#程序供调用,现在的问题是我不知道该把COM中的void*类型封装成什么返回类型,COM是用Visual C++开发的Top
16 楼priscill(priscill)回复于 2004-07-02 08:19:23 得分 0
各位大侠,来发表一下你们的见解啊Top
17 楼nkwesley(江南丝竹)回复于 2004-07-02 08:21:45 得分 2
关注一下Top
18 楼bluwindhrt(风一飞)回复于 2004-07-02 08:36:26 得分 5
把文件影像封装成CString类型是不好的选择,因为CString事实上仍只是封装了以'\0'结束的字符串。没办法的话,楼主不妨自己建一个类似CString的类,封装BYTE型的动态数组,并注意有成员标识该数组的大小——根据需要,这个类可以很简单,但需要重载其=操作符并实现拷贝构造函数。Top
19 楼haizhiyu(海之鱼)回复于 2004-07-02 08:58:10 得分 5
用VARIANT传递,任何语言都可以使用
Top
20 楼priscill(priscill)回复于 2004-07-02 12:41:57 得分 0
bluwindhrt(蓝风) :
有例子吗?或者简单地说明一下如何实现?
haizhiyu(海之鱼) :
如何用VARIANT转换呢?有没有相应的例子吗?Top
21 楼zhangnanonnet(鱼欢)回复于 2004-07-02 14:06:56 得分 2
我顶。。。。Top
22 楼bluwindhrt(风一飞)回复于 2004-07-08 00:13:33 得分 2
记起来了,有现成的类可以用呢:CByteArray,去看看MSDN吧!Top
23 楼jyc_nj(老蔣)回复于 2004-07-08 14:06:11 得分 2
你的COM是在同一进程中使用么?
觉得同一进程中的话, 直接传地址进去,虽不规范但好象也不会错.
不同进程就麻烦了.看有没有人能指点一下.Top
24 楼gunj(三生万物(我以我血荐轩辕))回复于 2004-07-08 14:09:32 得分 1
我顶......混点分撒Top
25 楼sybook(挣钱养老婆孩子)回复于 2004-07-08 15:44:54 得分 1
CString str;
void *p;
str.Format("%s",(char*)p);
Top




