• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > COM里一个方法中的参数不认TCHAR类型如何解决

COM里一个方法中的参数不认TCHAR类型如何解决

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了tchar,tchar转char,tchar.h,tchar转cstring,tchar转string等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM里一个方法中的参数不认TCHAR类型如何解决
描述:

由于工作需要刚接触COM,做了一个方法。
需要这个方法中有一个参数要像TCHAR*那样,可是作出来这样的方法候编译提示错误,好像是IDL不认这种参数类型,只认BSTR还有C++中的很多变量类型在IDL里都不认。只好使用BSTR然后在方法内部再将BSTR转换成TCHAR*,可是现在这个方法要求的是执行速度优先,所以对于大文本,每一次字符集转换都相当耗时,还希望各位仁兄帮忙解决这个问题。
我需要尽量减少字符集的转换,因为我要处理的是普通字符集,而BSTR中的都是宽字符。不能转换,每一次转换都严重威胁整个组件的执行速度。
能不能像在C++里的函数参数一样使用char* 或 TCHAR* 啊。
最好有个例子代码


解决方案1:

使用 BYTE* 吧
idl中:
......
[id(1), helpstring("method ReceiveBigString")] HRESULT ReceiveBigString(BYTE *pbyStringData, long lDataSize);
......
假设组件类名为ImplBigStringReceiver
调用端(以VB为例)
Dim strTest As String
    
strTest = "Hello World"
    
Dim byTest() As Byte
    
byTest = strTest
dim oReceiver as new ImplBigStringReceiver    
oReceiver.ReceiveBigString byTest(0), 10
被调用端接受到之后,用类似的代码来处理:
STDMETHODIMP CDigiClock::TransportBigString(BYTE *pbyStringData, long lDataSize)
{
// TODO: Add your implementation code here
unsigned char *pStr = pbyStringData;
LPCTSTR str = (LPCTSTR)pStr;
return S_OK;
}
具体应用中 要用lDataSize中的信息决定字符个数

解决方案2:

那么楼主就应该象iidunknown(xiang ping) 所说的,将字符串看成是一块内存空间来进行传递。如:
.idl:
HRESULT ReceiveBigString( [in, sizeof( lDataSize )] BYTE *pbyStringData,
                          [in] long lDataSize );
.cpp:
客户
char a[] = "dsklfsdkl";
pPointer->ReceiveBigString( a, strlen( a ) + 1 );
服务
pbyStringData即可用做字符串处理


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • IXMLHTTPRequest->put_onreadystatechangeIDispatcharg1怎么使用,非常着急?
  • 求:翻译此VBA代码为vc"ActiveChartChartAreaCopy"
  • tchar到bstr要怎么转?
  • TChart控件Interfacenotsupoorted
  • ActiveX控件“MicrosoftChartControl60sp4OLEDB"不能例示
  • vs2005与VC60问题“'TCHAR[255]'to'PCHAR'”?
  • _bestr_t如何转换TCHAR?
  • BSTR字符串到TCHAR类型的转换
  • LPWSTR,LPSTR,LPTSTRconstchar谁能告诉我这些东西之间的关系?在线等待
  • COM里一个方法中的参数不认TCHAR类型如何解决

相关文章

  • 2017-06-05 CreateThread难题,CSDN的高手快请进,解决后分数任你要!!
  • 2017-06-05 多线程同步--在一个类中构造函数中用CreateEvent创建一个信号,CreateEvent0,TRUE,TRUE,port
  • 2017-06-04 求语音聊天管理系统源码!
  • 2017-06-04 ATL的COM+组件中,如何做一个输出参数到ASP中?BSTRxx好像不行,VARIANTxx,不报错,可是好像也不行!
  • 2017-06-04 关于右键事件的问题!
  • 2017-06-04 请问如何使用_RecordsetPtrm_spRS,的m_spRS->EOF?
  • 2017-06-04 在控件中使用控件遇到的问题!
  • 2017-06-04 想学ActiveX需要看什么?求助高手
  • 2017-06-04 如何学习COM/DCOM,或是COM++
  • 2017-06-04 VC怎样调用COM控件的接口函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VC2010调用MapWinGISocx控件
    • WINDOWS中让程序休眠n秒钟用哪个函数啊?
    • IE编程问题:程序在IE6中可以通过,但是在IE7中无法运行
    • 100分请教高手一个dll调试的基本问题。
    • vc+mapx图层编辑问题
    • 调用exe文件的输出函数,exe文件是如何初始化的?
    • 关于ActiveX调度接口重载的问题?
    • 多线程的问题,谁能告诉我どうしで?
    • 如何制作一个安装包,能在安装的过程中将一个exe文件安装成系统服务
    • 如何得到OCX控件中发送事件的内容

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有