两个测试程序,都是MFC基于对话框的应用程序,一个是发送者,一个是接收者。

两个程序都使用同一个结构体:

typedef struct
{char imsi[20];char options[512];
}_tagResult;

发送者

按钮点击事件:

void CCardXSenderDlg::OnButton1()
{HWND hwnd = ::FindWindow(NULL, "CardXApp");if(hwnd){static _tagResult result;static COPYDATASTRUCT sendData;ZeroMemory(&result, sizeof(_tagResult));strcpy(result.imsi, "result_imsi0");strcpy(result.options, "result_options0");ZeroMemory(&sendData, sizeof(sendData));sendData.lpData = &result;sendData.cbData = sizeof(result);::SendMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&sendData);
//      ::PostMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&sendData);  // can't use ::PostMessage()}
}

接收者就是一个 WM_COPYDATA的实现函数:

BOOL CCardXAppDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{CString msg;_tagResult result;memcpy(&result, pCopyDataStruct->lpData, sizeof(result));msg.Format("imsi=[%s], options=[%s]", result.imsi, result.options);MessageBox(msg);return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}

完成了上面的工作就可以测试了,只要点击发送者的按钮,接收端就可以接收到发过来的消息了。

注意:发送WM_COPYDATA消息时,必须使用SendMessage,不能使用PostMessage,否则接收端会收不到消息的。

VC跨进程数据(结构体)传递-WM_COPYDATA相关推荐

  1. linux进程内存结构体,Linux下网络编程(3)——进程间通信(IPC),共享内存,传递结构体数据...

    1. 前言 多进程,总有一些交互要做,不可能各自独立. 这里是最简单的例子.一个写入,一个读取. 一个建立共享内存,写入数据. 一个读取共享内存的内容. 2. 简单例子代码 twriter.cpp 代 ...

  2. JNA Pointer结构体传递

    我们在C++转JAVA代码的时候有时会遇到指针的转换,这里给出类型转换图: Native Type Java Type Native Representation char byte 8-bit in ...

  3. c# 与c++接口间调用时传递结构体

    复杂结构体的传递 1. 输出参数,结构体作为指针传出 非托管部分代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...

  4. 驱动下通过进程PID获得进程名 (动态获取ImageFileName在EPROCESS结构体中的相对偏移)...

    思路 进程EPROCESS结构体中含有进程名ImageFileName(需求处ImageFileName在EPROCESS结构体中的相对偏移)-->获得进程EPROCESS-->通过进程句 ...

  5. QT:复杂结构体不同窗口间传递

    QT:复杂结构体不同窗口间传递(父传子,子传父) (父传子) 在写程序时,难免会碰到多窗体之间进行传值的问题,今天主要谈一下复杂结构体传值的问题(网上有很多博客,看的头疼,本篇进行详细解读). 具体原 ...

  6. linux结构体转qbytearray,QByteArray储存二进制数据(包括结构体,自定义QT对象)

    因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 //自定义person结构体 typede ...

  7. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  8. 结构体struct的自然对齐问题(经典)

    结构体struct的自然对齐问题下面的机构体 struct A {     char c;     int i;     char cc; }; 它的sizeof()是多少呢? 如果是紧凑对齐的话,当 ...

  9. OS / Linux / 文件描述符以及 file 结构体

    零.前言 程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在 ...

最新文章

  1. 【深度学习】你不知道的车牌识别系统
  2. 揭秘一线互联网企业 前端JavaScript高级面试
  3. js获取当前日期星期几
  4. java长连接例子_java实现长连接
  5. 计算机中年级排名怎么操作,智学网如何查看年级排名 智学网看年级排名方法【详解】...
  6. 【4】协同过滤算法的原理与实现
  7. WPF Splash Screen 和启动速度相关资料
  8. linux中启动不了服务,Linux系统xinetd服务启动不了
  9. wptx64能卸载吗_电脑可以卸载bonjour软件吗?详细介绍bonjour软件
  10. 【鱼眼镜头5】[中央全向相机畸变模型]:统一相机模型,四阶多项式对统一相机模型进行建模
  11. 解决:IDEA2017/2019与Maven3.6.3不兼容的导致的unable to import maven project: see logs for details问题
  12. IQ FMEA-失效模式及影响分析
  13. 读懂了鱼玄机,就读懂了爱情
  14. STM32F072RB 实作笔记(一)- Keil 安装
  15. mcu AD采样值和物理值
  16. C语言左移右移操作符详解
  17. OpenCASCADE7.6编译
  18. 美式期权损益图matlab,一看就懂,盈亏全在图上了,超实用的期权损益图绘制
  19. Mac电脑搭建wordpress教程
  20. C# Word文档添加水印

热门文章

  1. 回归分析检验_回归分析
  2. leetcode357. 计算各个位数不同的数字个数(回溯)
  3. onclick判断组件调用_从子组件Onclick更新状态
  4. android开发使用c+_如何在Android项目中开始使用C ++代码
  5. ux设计师怎样找同类产品_没有预算? 别找借口。 便宜的UX上的UX 2:让我们开始构建。...
  6. 机器学习模型 非线性模型_调试机器学习模型的终极指南
  7. 大数据(big data)_如何使用Big Query&Data Studio处理和可视化Google Cloud上的财务数据...
  8. 唯一约束(UNIQUE_KEY)
  9. 带参数的URLconf
  10. linux 下 安装 matplotlib 版本依赖(旧版本)