文档章节

传递结构体变量解决方案,资料整理一

小青_1989
 小青_1989
发布于 2014/06/06 14:04
字数 611
阅读 29
收藏 0
  • 1.activex控件返回BSTR* 的方法

用到了

COleDataObject::GetData

BOOL GetData( CLIPFORMAT cfFormat, LPSTGMEDIUM lpStgMedium, LPFORMATETC lpFormatEtc = NULL );

其中第一个参数为ClipboardFormat

然后查找

The RegisterClipboardFormat function registers a new clipboard format. This format can then be used as a valid clipboard format.

UINT RegisterClipboardFormat(
  LPCTSTR lpszFormat   // address of name string);

然后查找

Clipboard  

方便在应用程序间或者在应用程序内部传递参数

The clipboard is a set of functions and messages that enable Win32-based applications to transfer data. Because all applications have access to the clipboard, data can be easily transferred between applications or within an application.

This overview does not describe how to copy and paste linked or embedded objects. For information on these subjects, see the COM documentation. 

2.在C++中如何将ActiveX控件所使用的BSTR数据转换成CHAR字符数组

论坛链接:http://blog.csdn.net/wbczyh/article/details/2137511

C++中如何将ActiveX控件所使用的BSTR数据转换成CHAR字符数组?

 

BSTR类型是COM中使用的标准字符串类型。它其实是一个32位指针,保存字符串首字符的地址。

       在C++中使用ActiveX控件编程时经常会遇到声明为VARIANT* 类型但实际是BSTR数据的参数,如在使用WebBrowser2浏览器控件时候:

BeforeNavigate2Explorer1(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel)

上面这个事件函数的第二个参数URL就是个BSTR类型的数据,但声明为VARIANT*。怎样将它转化char*类型的数据呢?方法如下:

 

#include "comutil.h"

#pragma comment(lib, "comsuppw.lib")

#pragma comment(lib,"comsuppwd.lib")

 

BeforeNavigate2Explorer1(LPDISPATCH pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, BOOL* Cancel)

{

_bstr_t bstrURL(URL);//新建一BSTR类型的数据,以VARIANT数据作为构造函数的参数

char* sURL=bstrURL;//通过自动类型转换实现BSTR->char*的转换

}

 

基本方法就是:先新建一BSTR类型的数据,通过在构造函数中传入VARIANT*类型的数据来将COM中的数据拷贝到新建数据中;然后通过BSTR到char*的自动类型转换实现BSTRàchar*的转换。

 

值得注意的是进行这些转换操作得有个前提条件:那就是引用COM相应的头文件及库,参见上面的代码。

 

其实在上面的库中有一对BSTR与char*之间互转的函数:

char*  _com_util::ConvertBSTRToString(BSTR pSrc);

BSTR     _com_util::ConvertStringToBSTR(const char* pSrc);

第一个函数将BSTR转换成char*,第二个函数作相反的转换,使用方法都很简单,就不用赘述了!


© 著作权归作者所有

共有 人打赏支持
小青_1989
粉丝 3
博文 75
码字总数 12913
作品 0
大连
程序员
私信 提问
Go 函数式选项模式

本文译自 Functional Options Pattern in Go 版权@归原文所有. Golang 开发者遇到的许多问题之一是尝试将一个函数的参数设置为可选. 这是一个非常常见的用例, 有些对象应该使用一些基本的默认...

A Coder @ Work
2018/02/01
0
0
【Nebula系列】通过UNIX域套接字传递描述符的应用

  传送文件描述符是高并发网络服务编程的一种常见实现方式。Nebula 高性能通用网络框架即采用了UNIX域套接字传递文件描述符设计和实现。本文详细说明一下传送文件描述符的应用。 1. TCP服务...

铁芒箕
2018/07/18
0
0
C语言基础-13-结构体

C语言的核心部分都说得七七八八了,相信大家已经对C语言的基本数据类型(charintfloat)、数组、指针都很熟悉了,今天来学习C语言中另外一种数据类型:结构体。在iOS开发中,结构体是经常用到的...

Corwien
2016/03/16
10
0
完成端口中的单句柄数据结构与单IO数据结构的理解与设计

完成端口中的单句柄数据结构与单IO数据结构的理解与设计   完成端口模型,针对于WIN平台的其它异步网络模型而言,最大的好处,除了性能方面的卓越外,还在于完成端口在传递网络事件的通知时...

IMGTN
2012/11/28
0
0
swift4.0-11 类和结构体

代码学习swift4.0, 类和结构体 // // main.swift // SwiftLearn11-类和结构体 // // Created by iOS on 2018/5/7. // Copyright © 2018年 weiman. All rights reserved. // import Foundat......

小曼Study
2018/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

独家解密:阿里超大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

阿里云云栖社区
9分钟前
0
0
独家解密:阿里大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

zhaowei121
13分钟前
0
0
mongodb系列~配置文件的优化与处理

mongodb系列~配置文件的优化与处理 一 简介:讲讲如何优化mongo配置文件 二 常规参数 port= //端口 fork=true//守护进程方式启动mongo logpath=shard.log //mongo日志存放路径 journal= tru...

linjin200
15分钟前
0
0
同一台 windows10 设备,安装两个不同版本的mysql

两个mysql 的my.ini文件需要 配置不同的端口。 [mysqld]# 设置3307端口port=3307# 设置mysql的安装目录basedir=F:\\mysql-5.7.24-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里...

无敌小学僧
15分钟前
0
0
条码插件TBarCode Office系列教程一(Word Add-In篇)

TBarCode Office是一款适用于Microsoft Word 2007、2010和2013的条码插件,通过此插件可以轻松的在您的文档中嵌入代码。此系列教程旨在介绍TBarCode Office的常见问题及解答,帮助大家学习使...

ymy_666666
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部