CreateCustomShape函数怎么在C++调用,参数需要用SAFEARRAY

news2024/9/25 21:19:20

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

  vba参数转c++ SAFEARRAY。这个CreateCustomShape函数怎么在C++调用,参数需要用SAFEARRAY,下面是一段vba的,请帮我写一个SAFEARRAY提交参数的。CreateCustomShape(“Callout”, “1”, 0, 0.07874, Array(Ex, Ey), Array(128.25, 53.74), 0#, Nothing, 0, 0, False)

如上问题有来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。

解决方案

  如下是上述问题的解决方案,仅供参考:

  在C++中使用SAFEARRAY来传递数组参数,通常涉及到COM(组件对象模型)的使用,因为SAFEARRAY是COM中的一种数据结构,用于在COM对象之间传递数组。在VBA中,Array函数创建的数组可以自动转换为SAFEARRAY,但在C++中需要手动创建和操作。

以下是一个C++示例,演示如何创建SAFEARRAY并将其作为参数传递给一个假设的CreateCustomShape函数。请注意,这个示例假设你已经有了一个可以调用的CreateCustomShape函数的接口,并且这个函数的实现是COM兼容的。

#include <iostream>
#include <comdef.h> // for SAFEARRAY-related definitions

// 假设的CreateCustomShape函数声明
void CreateCustomShape(
    BSTR shapeType,
    BSTR id,
    float xPos,
    float yPos,
    SAFEARRAY* exArray,
    SAFEARRAY* eyArray,
    float rotation,
    VARIANT_BOOL lockAspectRatio,
    long flipHorizontal,
    long flipVertical);

int main() {
    // 创建SAFEARRAY
    SAFEARRAYBOUND bounds[1];
    bounds[0].lLbound = 0; // 0-based index
    bounds[0].cElements = 2; // 数组元素数量

    SAFEARRAY *exArray, *eyArray;
    exArray = SafeArrayCreate(VT_R8, 1, bounds); // VT_R8 is double
    eyArray = SafeArrayCreate(VT_R8, 1, bounds);

    // 填充SAFEARRAY数据
    double exData[2] = {128.25, 53.74};
    double eyData[2] = {Ex, Ey}; // 假设Ex和Ey是已知的double变量

    SafeArrayPutElement(exArray, &exData, exData);
    SafeArrayPutElement(eyArray, &eyData, eyData);

    // 调用CreateCustomShape函数
    CreateCustomShape(
        L"Callout", L"1", 0, 0.07874, 
        exArray, eyArray, 
        0.0, VARIANT_FALSE, 0, 0);

    // 释放SAFEARRAY
    SafeArrayDestroy(exArray);
    SafeArrayDestroy(eyArray);

    return 0;
}

请注意,这个示例代码中有几个假设:

  1. CreateCustomShape函数的声明和实现是COM兼容的。
  2. VT_R8SAFEARRAY元素的类型,表示double类型。
  3. SafeArrayPutElement函数用于将数据放入SAFEARRAY中。
  4. ExEy是你需要传递给CreateCustomShape函数的变量,它们应该是double类型。

在实际使用中,你需要根据你的具体需求和环境来调整这个示例代码。如果CreateCustomShape函数不是COM兼容的,或者你使用的是不同的编程环境,那么实现细节可能会有所不同。

  希望如上措施及解决方案能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1971115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于去中心化自治组织DAO

DAO&#xff08;Decentralized Autonomous Organizations&#xff09;代表了一种变革性的治理和组织管理方法&#xff0c;利用区块链技术创建透明、民主和自我管理的实体。通过自动化决策过程并减少对传统等级结构的依赖&#xff0c;DAO使各种社区团体能够共同管理资源、项目和…

技术分享 | 自动化测试中如何高效定位元素?

在自动化测试中&#xff0c;元素定位是一项非常重要的工作。良好的元素定位可以帮助测试人员处理大量的测试用例&#xff0c;加快测试进度&#xff0c;降低工作负担。但是在实际的测试工作中&#xff0c;我们常常遇到各种各样的定位问题&#xff0c;比如元素定位失败、元素选择…

【数学建模】评价类模型:优劣解距离法

【数学建模】评价类模型&#xff1a;优劣解距离法 目录 【数学建模】评价类模型&#xff1a;优劣解距离法 1&#xff1a;前言 2&#xff1a;算法 1. 将原始矩阵正向化(统一为极大型) 2. 正向矩阵标准化(消除量纲) 3. 计算得分并归一化 3&#xff1a;例题 4&#xff1a…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#x…

书单 | 大模型的书那么多,如何快速选到适合自己的那一本?来,教你!

大模型的书这么多&#xff0c;该怎么选呢&#xff1f; 本期书单就来教大家怎么快速地从众多大模型书中选到你想要的那一本&#xff01; 大模型基础 大模型入门不可错过的一本书&#xff0c;就是这本大模型界的经典畅销书**《大规模语言模型》**&#xff01;系统性强&#xf…

Excel函数基础(二)

1、单元格名称 框选单元格&#xff08;不含标题&#xff09;&#xff0c;公式选项卡->定义名称&#xff0c; 或者框选单元格后&#xff0c;在左上角的栏位直接输入要定义的名字&#xff0c;按下enter键即可 这样在使用函数时&#xff0c;数据范围参数可以用定义的名称来替…

4款翻译软件分享,告别职场困境

作为一名初入职场的新人&#xff0c;我经常会遇到各种需要翻译的文件&#xff0c;从合同到项目报告&#xff0c;再到专业资料&#xff0c;无一不考验着我的语言能力。幸运的是&#xff0c;我遇到了几款超级给力的翻译软件——福昕翻译在线、福昕翻译客户端、海鲸AI翻译和deepl翻…

Python | Leetcode Python题解之第310题最小高度树

题目&#xff1a; 题解&#xff1a; class Solution:def findMinHeightTrees(self, n: int, edges: List[List[int]]) -> List[int]:if n 1:return [0]g [[] for _ in range(n)]deg [0] * nfor x, y in edges:g[x].append(y)g[y].append(x)deg[x] 1deg[y] 1q [i for …

太厉害了,使用WebGL SDK居然可以添加这么多图层!

想象一下&#xff0c;你在网页上展示一张地图&#xff0c;不仅有基本的点、线、面&#xff0c;还能叠加三维模型、高分辨率影像、地形数据&#xff0c;甚至实时的车辆轨迹。这听起来是不是很酷&#xff1f;今天&#xff0c;我们就来聊聊如何用Mapmost WebGL SDK&#xff0c;轻松…

【Unity Shader】切线空间下计算凹凸映射

// Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*)Shader "Unlit/NormalTangent" {Properties{_Color("Color Tint", Color) (1, 1, 1, 1)_MainTex("Main Tex", 2D) "While"{}//法线纹理_BumpMap(&q…

windows11高级电源设置中【睡眠】里面的 【在此时间后休眠】没有了

系统更新后发现电脑的定时休眠功能没了&#xff0c;打开电源选项发现【在此时间后休眠】这个功能直接没了如下 1、添加【在此时间后休眠】选项 step1&#xff1a; 用管理员身份打开命令提示符 step2&#xff1a;输入 reg add HKLM\System\CurrentControlSet\Control\Power /v …

[数据集][目标检测]辣椒病害成熟度检测数据集VOC+YOLO格式2748张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2748 标注数量(xml文件个数)&#xff1a;2748 标注数量(txt文件个数)&#xff1a;2748 标注…

cocos creator 3.x中动态加载 resources 文件夹下的图片时提示找不到

文件目录如下 类型为spriteFrame 代码案例 图片设置为 sprite-frame、texture 或其他图片类型后&#xff0c;将会在 资源管理器 中生成一个对应类型的资源。但如果直接加载 equipments/testea&#xff0c;得到的类型将会是 ImageAsset&#xff0c;必须指定路径到具体的子资源…

微信小程序开发之自定义组件

微信小程序支持自定义组件&#xff0c;允许开发者创建可复用的自定义组件库&#xff0c;提高开发效率并增强代码的可维护性。 自定义组件分为全局组件和局部组件。 一、下面展示全局组件 创建components 目录&#xff0c;如图所示: 创建组件文件夹&#xff1a; 利用微信开发…

常用排序算法的实现与介绍

常用排序算法的实现与介绍 在计算机科学中&#xff0c;排序算法是非常基础且重要的一类算法。本文将通过C语言代码实现&#xff0c;介绍几种常见的排序算法&#xff0c;包括冒泡排序、选择排序、插入排序和快速排序。以下是这些排序算法的具体实现和简要介绍。 1. 冒泡排序&am…

【Redis 进阶】主从复制(重点理解流程和原理)

在分布式系统中为了解决单点问题&#xff08;某个服务器程序只有一个节点&#xff08;只搞一个物理服务器来部署这个服务器程序&#xff09;。可用性不高&#xff1a;如果这个机器挂了意味着服务就中断了&#xff1b;性能 / 支持的并发量比较有限&#xff09;。通常会把数据复制…

免费插件集-illustrator插件-Ai插件-黄金比率绘图

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;绘制黄金比率示意图。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

【ESP32接入国产大模型之星火】

【ESP32接入国产大模型之星火】 1. 讯飞星火大模型1.1 了解星火 api1.2 Http接口鉴权1.3 http调用1.3.1 http请求结构体1.3.2 返回(response)参数1.3.3 错误响应 2. 先决条件2.1 环境配置2.2 所需零件 3. 核心代码3.1 源码分享3.2 源码解析 4. 上传验证4.1 对话测试4.2 报错 5.…

【MySQL】一文彻底吃透MVCC执行原理

1.MVCC是什么&#xff1f; MVCC全称Multi-Version Concurrency Control&#xff0c;即多版本并发控制。它通过维护数据的多个版本来实现高效的并发控制&#xff0c;用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。 在搞清楚MVCC的实现原理之前&#xff0c;还需…

一天攻克一个知识点 —— 设计模式之动态代理

一、设计模式之代理设计 代理设计是在Java开发中使用较多的一种设计模式&#xff0c;所谓的代理设计模式就是指一个代理主体操作真实主体&#xff0c;真实主体操作具体业务&#xff0c;代理主体负责给具体业务添砖加瓦。 就好比在生活中你有一套房子想要出租(你真实主体)&…