当前位置: 首页 > news >正文

在Windows编程中,MFC\C++中如何在OnCopyData中传递Vector类型数据?

我们在通过 WM_COPYDATA 消息实现进程间通信时,发送char 数组或其他类型数组与发送vector是有区别的。

1、发送基础类型时,直接发送指针。

typedef struct tagMYSTRUCT
{int nTest;wchar_t cTest[40] = {0};
} MYSTRUCT, *PMYSTRUCT;MYSTRUCT stSend;
stSend.nTest = 10;
stSend.cTest = "test";COPYDATASTRUCT cds;
cds.dwData = MY_CASE;
cds.cbData = sizeof(OTHERSTRUCT);
cds.lpData = &stSend;SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds);

2、发送使用vector时,可以使用 std::vector::data() 获得必要的指针,否则,接收应用程序无法获取它。

std::vector 是使用指针在内部实现的,内存不一定连续,所以不能直接发送它,但可以发送它的数据,因为它保证在内存中是连续的.
可以使用 std::vector::data() 获得必要的指针:

typedef struct tagOTHERSTRUCT
{wchar_t one[40] = { 0 };wchar_t two[20] = { 0 };wchar_t three[20] = { 0 };wchar_t four[4] = { 0 };wchar_t five[3] = { 0 };
} OTHERSTRUCT, *POTHERSTRUCT;

注意:VC++ 对C++ 的支持有些欠缺,所以这个data() 在VS2010 或之前的版本中是不可用的。如果需要,可以将其替换为 :
cds.lpData = &OtherStructList[0];
只要确保 vector 不为空即可。

发送方

std::vector<OTHERSTRUCT> OtherStructList;
......//OtherStructList成员赋值COPYDATASTRUCT cds;
cds.dwData = MY_CASE;
cds.cbData = sizeof(OTHERSTRUCT) * OtherStructList.size();
cds.lpData = &OtherStructList.data();;SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds);

接收方

OTHERSTRUCT *begin = static_cast<OTHERSTRUCT*>(pcopydata->lpData);
OTHERSTRUCT *end = begin + pcopydata->cbData / sizeof(OTHERSTRUCT);
//copy the data into a vector, or treat them directly
std::vector<OTHERSTRUCT> recvData(begin, end);

相关文章:

在Windows编程中,MFC\C++中如何在OnCopyData中传递Vector类型数据?

我们在通过 WM_COPYDATA 消息实现进程间通信时&#xff0c;发送char 数组或其他类型数组与发送vector是有区别的。 1、发送基础类型时&#xff0c;直接发送指针。 typedef struct tagMYSTRUCT {int nTest;wchar_t cTest[40] {0}; } MYSTRUCT, *PMYSTRUCT;MYSTRUCT stSend; s…...

Java常见面试题-01-java基础

文章目录 面向对象的特征Java 的基本数据类型有哪些JDK、JRE、JVM 的区别重载和重写的区别Java 中和 equals 的区别String、StringBuffer、StringBuilder 三者之间的区别接口和抽象类的区别是什么string 常用的方法有哪些什么是单例模式&#xff1f;有几种&#xff1f;什么是反…...

Python爬虫实战:利用代理IP爬取百度翻译

文章目录 一、爬取目标二、环境准备三、代理IP获取3.1 爬虫和代理IP的关系3.2 巨量IP介绍3.3 超值企业极速池推荐3.4 IP领取3.5 代码获取IP 四、爬虫代码实战4.1分析网页4.2 寻找接口4.3 参数构建4.4 完整代码 一、爬取目标 本次目标网站&#xff1a;百度翻译&#xff08;http…...

Transformer学习之DETR

文章目录 1.算法简介1.1 算法主要贡献1.2 算法网络结构 2.损失函数设计2.1 二分图匹配(匈牙利算法)2.2 二分图匹配Loss_match2.3 训练Loss_Hungarian 3.网络核心模块3.1 BackBone模块3.2 空间位置编码(spatial positional encoding)3.2.1 输入与输出3.2.2 空间位置编码原理 3.3…...

场外个股期权是什么品种?可以交易哪些品种?

今天带你了解场外个股期权是什么品种&#xff1f;可以交易哪些品种&#xff1f;场外个股期权是指在场外市场进行交易的个股期权合约&#xff0c;与在交易所交易的标准化个股期权有所不同&#xff0c;它是由买方和卖方通过私下协商&#xff0c;而非通过公开交易所进行买卖和定价…...

每日学术速递8.5-3

1.BoostMVSNeRFs: Boosting MVS-based NeRFs to Generalizable View Synthesis in Large-scale Scenes 标题&#xff1a; BoostMVSNeRFs&#xff1a;将基于 MVS 的 NeRFs 提升到大规模场景中的可泛化视图合成 作者&#xff1a;Chih-Hai Su, Chih-Yao Hu, Shr-Ruei Tsai, Jie-…...

C#针对kernel32.dll的一些常规使用

1、前言 Window是一个复杂的系统&#xff0c;kernel32是一个操作系统的核心动态链接库文件。它提供了大量的API函数&#xff0c;提供了操作系统的基本功能。 2、Ini使用 Ini文件读写使用时&#xff0c;我们需要用到其中的一些函数对文件进行读写。 API&#xff1a; /// &l…...

电话营销机器人的优势

在人工智能的新趋势下&#xff0c;企业开始放弃传统外呼系统&#xff0c;转而使用电话销售机器人&#xff0c;那么使用机器人比坐席手动外呼好吗&#xff0c;真的可以代替人工坐席外呼吗&#xff0c;效率真的高吗&#xff1f; 1、 真人式语音 电话销售人员可以将自定义的话术…...

Oracle SQL Developer 连接第三方数据库

首先Oracle SQL Developer除了支持连接Oracle数据库外&#xff0c;还支持连接第三方数据库&#xff0c;包括&#xff1a; Amazon RedshiftHiveIBM DB2MySQLMicrosoft SQL ServerSybase Adaptive ServerPostgreSQLTeradataTimesTen 首先&#xff0c;你需要在菜单Tools > Pr…...

OSPF路由协议多区域

一、OSPF路由协议单区域的弊端 1、LSDB庞大,占用内存大,SPF计算开销大; 2、LSA洪泛范围大,拓扑变化影响范围大; 3、路由不能被汇总,路由表庞大,查找路由开销大。 二、如何解决OSPF单区域的问题? 引入划分区域 1、每个区域独立存储LSDB,划分区域减小了LSDB。 2、…...

8.5 C++

思维导图 试编程 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include <array>using namespace std;int main() {cout << "请输入一个字符…...

MySQL —— 初始数据库

数据库概念 在学习数据库之前&#xff0c;大家保存数据要么是在程序运行期间&#xff0c;例如&#xff1a;在学习编程语言的时候&#xff0c;大家写过的管理系统&#xff0c;运用一些简单的数据结构&#xff08;例如顺序表&#xff09;来组织数据&#xff0c;可是程序一旦结束…...

【JVM】垃圾回收机制、算法和垃圾回收器

什么是垃圾回收机制 为了让程序员更加专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也是我们常常提及的GC(Garbage Collection) 有了这个垃圾回收机制之后&#xff0c;程序员只需…...

大数据资源平台建设可行性研究方案(58页PPT)

方案介绍: 在当今信息化高速发展的时代&#xff0c;大数据已成为推动各行各业创新与转型的关键力量。为了充分利用大数据的潜在价值&#xff0c;构建一个高效、安全、可扩展的大数据资源平台显得尤为重要。通过本方案的实施企业可以显著提升数据处理能力、优化资源配置、促进业…...

PHP教育培训小程序系统源码

&#x1f680;【学习新纪元】解锁教育培训小程序的无限可能✨ &#x1f4da; 引言&#xff1a;教育培训新风尚&#xff0c;小程序来引领&#xff01; Hey小伙伴们&#xff0c;是不是还在为找不到合适的学习资源而烦恼&#xff1f;或是厌倦了传统教育模式的单调&#xff1f;今…...

吴恩达机器学习笔记

1.机器学习定义&#xff1a; 机器学习就是让机器从大量的数据集中学习&#xff0c;进而得到一个更加符合现实规律的模型&#xff0c;通过对模型的使用使得机器比以往表现的更好 2.监督学习&#xff1a; 从给定的训练数据集中学习出一个函数&#xff08;模型参数&#xff09;…...

React和Vue3 的 Diff 算法有什么区别

React 和 Vue 3 的 Diff 算法都有相似的目标&#xff0c;即在组件状态或属性变化时高效地更新 DOM&#xff0c;但它们在实现细节上有所不同。以下是 React 和 Vue 3 的 Diff 算法的主要区别&#xff1a; React 的 Diff 算法 1. 同层比较 React 使用的是同层比较策略&#xf…...

【vulhub靶场之rsync关】

一、使用nmap模块查看该ip地址有没有Rsync未授权访问漏洞 nmap -p 873 --script rsync-list-modules 加IP地址 查看到是有漏洞的模块的 二、使用rsync命令连接并读取文件 查看src目录里面的信息。 三、对系统中的敏感文件进行下载——/etc/passwd 执行命令&#xff1a; rsy…...

全球7大高质量海外代理IP对比大全

随着国内市场逐渐饱和&#xff0c;越来越多朋友私信我说打算开拓海外市场这片蓝海了&#xff01;海外代理IP作为解决这些需求的有效工具&#xff0c;帮助跨境企业或团队进行社媒管理、电商运营、市场调研、抓取数据、广告验证等等业务。但是&#xff0c;市场上提供的代理IP服务…...

对于原型链的理解

1.同一个构造函数的多个实例之间 无法共享属性&#xff08;创建多个实例的时候会造成资源浪费&#xff09; function Cat(name, color) {this.name name;this.color color;this.meow function () {console.log(miao);}; }var cat1 new Cat(LH, White); var cat2 new Cat(…...

推荐3款文字转语音小工具,总有一款适合你

聊一聊现在用眼太多&#xff0c;眼睛太累&#xff0c;不想再看电脑和手机了。想用耳朵来分担一下。特别是一些文字&#xff0c;电子书方面的。能听还是听吧&#xff0c;看也不一定能看进去&#xff0c;听的话&#xff0c;有可能还是能听进去一点。所以&#xff0c;就找了一些文…...

文件(内部/外部)存储

Android 文件存储主要分为**内部存储**、**外部存储**(现在叫分区存储)和**其他介质**(如 SD 卡、USB)。理解它们的区别对开发很重要,特别是 Android 10+ 引入的**分区存储**机制。 1. 内部存储 (Internal Storage) 特点:私有、安全、随应用卸载而删除。其他应用和用户…...

OBS绿幕抠像技术解析:chroma_key_filter.effect源码实现与优化

1. 绿幕抠像技术基础与OBS实现原理 绿幕抠像&#xff08;Chroma Key&#xff09;是视频处理领域的经典技术&#xff0c;就像魔术师用的隐身斗篷&#xff0c;它能让特定颜色范围&#xff08;通常是绿色或蓝色&#xff09;变得透明。我在实际项目中发现&#xff0c;OBS Studio作为…...

PE文件分析工具:提升逆向工程效率的专业解决方案

PE文件分析工具&#xff1a;提升逆向工程效率的专业解决方案 【免费下载链接】PEExplorerV2 Portable Executable Explorer version 2 项目地址: https://gitcode.com/gh_mirrors/pe/PEExplorerV2 在软件安全与逆向工程领域&#xff0c;深入理解可执行文件结构是一项核心…...

MKDV4GCL-ABB嵌入式存储芯片在智能物联网设备中的关键应用解析

1. 为什么物联网设备需要专用存储芯片&#xff1f; 第一次拆解智能家居设备时&#xff0c;我发现很多厂商都在用TF卡扩展存储。但实际使用三个月后&#xff0c;问题就来了——频繁读写导致卡片损坏&#xff0c;设备不断报存储错误。这就是典型选错存储方案的后果。物联网设备对…...

QMCDecode:破解音乐加密枷锁,重获数字音频自由

QMCDecode&#xff1a;破解音乐加密枷锁&#xff0c;重获数字音频自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默…...

别再只调参了!用波士顿房价数据实战,教你读懂岭回归和Lasso的系数变化与特征选择

波士顿房价预测实战&#xff1a;从岭回归到Lasso的系数解密与特征工程艺术 当我们面对包含13个特征的波士顿房价数据集时&#xff0c;传统的线性回归往往会给出看似完美的系数解。但你是否注意到&#xff0c;这些系数在实际应用中可能极度不稳定&#xff1f;这正是正则化技术大…...

Filament Shield 性能优化:7个提升权限系统效率的关键策略

Filament Shield 性能优化&#xff1a;7个提升权限系统效率的关键策略 【免费下载链接】filament-shield The easiest and most intuitive way to add access management to your Filament Panel; Resources, Pages & Widgets through spatie/laravel-permission 项目地址…...

AI人脸隐私卫士企业应用:会议合影自动脱敏合规方案

AI人脸隐私卫士企业应用&#xff1a;会议合影自动脱敏合规方案 关键词&#xff1a;企业隐私合规、会议合影脱敏、人脸自动打码、MediaPipe、本地离线处理、数据安全、GDPR、个人信息保护 摘要&#xff1a;在企业日常运营中&#xff0c;会议、团建、培训等活动产生的合影照片&…...

Chatbox:构建企业级AI助手客户端的3个架构设计关键

Chatbox&#xff1a;构建企业级AI助手客户端的3个架构设计关键 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox Chatbox作为一款开源的多模型AI桌面客户端&#xff0c;通过创新的技术架构设计&#xff0c;解决了…...