• 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 > 求问CComBSTR和BSTR奇怪事情

求问CComBSTR和BSTR奇怪事情

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

佚名通过本文主要向大家介绍了ccombstr,ccombstr cstring,可遇不可求的事情,生活中刻舟求剑的事情,做事情精益求精等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 求问 CComBSTR和 BSTR奇怪事情
描述:

BSTR* pbstrName;
CComBSTR bstrName;
CComPtr<IContact> spContact;
CComVariant vContactInfo;
//DB_FIELD_NAME 是常量,vContactInfo是输出,得到的是电话本的人名字的信息
HRESULT hr = spContact->GetProperty(DB_FIELD_NAME, &vContactInfo);
 bstrName = vContactInfo.bstrVal;//
 if(bstrName.m_str == NULL)
  {
  RETAILMSG(1,(L"bstrName.m_st==NULL\n"));
  }else{
RETAILMSG(1,(L"bstrName.m_st==%s\n",bstrName.m_str));
}
        *pbstrName = bstrName.Detach();
         
     if(*pbstrName == NULL){
RETAILMSG(1,(L"*pbstrName = NULL and bstrNumber=%s\n",bstrNumber));
  *pbstrName=bstrNumber;
  }else{
RETAILMSG(1,(L"*pbstrName !=NULL\n"));
}
 RETAILMSG(1,(L"*****pbstrName=%s\n",*pbstrName));
    }
但是不知道为什么,我在电话本中没有设置人名,应该说来bstrName.m_str的值应该是NULL的啊,但是很奇怪并不是NULL,我用%s打印出来的是几个乱码,不知道这是怎么回事呢?
难道BSTR类型的NULL本身就是有数据的? 谢谢


解决方案1:

你需要给它一个初始化值.你所得到的结果是因为你没有初始化.例如,


CComBSTR bstrName("");

解决方案2:

BSTR 其实是个指针,注意这点

解决方案3:

怪了,除非你把内存写乱了

解决方案4:

BSTR* pbstrName;这种用法错误,这个指针没有指向任何内存。应该这样用:
BSTR pbstrName = NULL;
pbstrName = bstrName.Detach();


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

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

  • 一个弱问题,函数需要的参数类型是BSTR&,可以传递CComBSTR的变量吗?多谢多谢
  • 谁能告诉我CComBstr和CComVariant之间怎么转换,我想把任何变量都转化为BSTR怎么做?
  • 急啊,CComBSTR的内存问题
  • 字符串转换char->CComBSTR->char
  • 是不是COM程序一定要用那些数据类型,像Ccombstr、safearray之类的。
  • CComBSTR内存泄漏问题
  • 用CComBSTR的奇怪问题?
  • 关于CComBSTR的使用
  • 由于硬盘坏了资源丢失了。寻找一个CComBSTR的加强类,有人知道吗?发给我一个。
  • CComBSTR使用完毕需要显示释放内存空间吗?

相关文章

  • 2017-06-04 ADO连接SQL数据库时Link出错:errorLNK2001:unresolvedexternalsymbol_main
  • 2017-06-04 [请教功力深厚者]关于mbstowcs与CComBSTR。
  • 2017-06-04 剪切板操作的问题
  • 2017-06-05 一个关于Ado访问MySql的问题
  • 2017-06-04 看COM的实列编程,请问各路高手看那本书呢?
  • 2017-06-05 我想防止函数重入,应怎么办?
  • 2017-06-04 关于《stl原码解析》附录C中孟先生讲的在vc设置stl的问题
  • 2017-06-05 如何获得屏幕上具有输入焦点的窗口包括其他进程的
  • 2017-06-05 一个IPC得问题,困扰很长时间,大家看看!给80了!!!
  • 2017-06-04 关于ActiveDriectory编程问题

文章分类

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

最近更新的内容

    • 进程关闭,线程访问违例,如何禁止弹出出错对话框?
    • libpnglib和GDI+哪个显示PNG图片效率更高
    • 求用VC++DirectShow开发的支持MP3,MP4,rmvb,wmv,avi等格式的音视频播放器资料和例子
    • 开发COM在参数传递时需要注意什么,大送分
    • 有没有现成的IStorage的实现??
    • IE刷新OCX无法重载??
    • 请教达大们一个很菜的关于对话框间消息传递的问题!
    • DllImportintDllExportget_userinfoDB_Info,char,Get_Person;这样的语句代表的什么意思?
    • 大哥们帮忙!在线等关于enum
    • 加上<!DOCTYPEhtm>后,子线程中用GetIDsOfNames就取不到dispid了,请各位指教。

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

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