MFC窗口之间的通讯一般会利用发送消息的方式传递,那么具体如何实现呢,代码如下:

下面实现的是一个子窗口把消息发送到主窗口的示例:

1.消息发送窗口部分代码:

首先添加自定义消息;
#define WM_MSG_BANCAI WM_USER+19      //   创建板材
首先定义一个结构体:typedef struct TSubCutDataUI
{int Index;int ItemType;//加工类型int CutType;//加工子类型double Depth;//深度double Lenth;double PosX;double PosY;double xWith;//通用宽度double yWith;//距形高度int Bias;//偏置double Diameter;//直径double Spacing;//阵列间距int Cnt;//个数int Arrangement;//排列方向int Xmap;//X镜像int Ymap;int Direction;//顺逆方向int IsIgnore;//是否加工HiWCADDataConst::HiWFaceType FaceType;} TSubCutDataUI;void CDuiLib_Dialog::Notify(TNotifyUI& msg)
{  TSubCutDataUI CutData;           //结构体变量if( msg.sType == _T("click") ) {  if(msg.pSender->GetName() ==XML_OPTIONCHECKPLATE)//板材{CutData.Depth=500;//深度CutData.xWith=300;//长CutData.yWith=300;//宽SendMessageToMain(WM_MSG_BANCAI, (WPARAM)&CutData, NULL);}}}

2.消息接收窗口代码:

//首先在接收差窗口消息队列映射里面添加:ON_MESSAGE(WM_MSG_BANCAI,CreatBancai);//然后在消息处理函数CreatBancai中接收数据并处理://在发送和接收消息的文件中都会用到同一个结构体,我这里是将结构体保存在一个头文件里面,
//然后在发送消息端与接收消息
//端都将头文件包含,然后分别创建了两个结构体变量,以备使用。LRESULT CcamDlg::CreatBancai(WPARAM wp,LPARAM lp)         //m_PMFCOCCCtl是另一个类的对象
{CutData=(TSubCutDataUI*)wp;    //接收数据m_PMFCOCCCtl->OnCreatBancai(CutData->xWith,CutData->yWith,CutData->Depth);    //  使用数据return 0;
}void CMFCOCCView::OnCreatBancai(double x,double y,double z)                   //创建板材
{BRepPrimAPI_MakeBox box=BRepPrimAPI_MakeBox(x,y,z);TopoDS_Shape S = box.Shape();                   //创建图形线性框Handle(AIS_Shape) ais1 = new AIS_Shape(S);myAISContext->SetColor(ais1,Quantity_NOC_GREEN,Standard_False); myAISContext->SetMaterial(ais1,Graphic3d_NOM_PLASTIC,Standard_False);   myAISContext->Display(ais1);
}

MFC窗口之间传递数据(结构体)相关推荐

  1. iphone 使用委托(delegate)在不同的窗口之间传递数据

    iphone 使用委托(delegate)在不同的窗口之间传递数据 在IOS里两个UIView窗口之间传递参数方法有很多,比如 1.使用SharedApplication,定义一个变量来传递. 2.使 ...

  2. VB如何在窗口之间传递数据?

    有多种方法可以在窗口之间传递数据,比如: 1.在模块文件(Module)中声明一个全局公共变量,然后在其他窗体中就可以通过这个变量来存取数据了,如: 在模块文件中声明变量a Public a as s ...

  3. Qt窗口之间传值和结构体数据

    简单明了,看效果+看代码 主窗口向子窗口进行传值和传结构体数据 子窗口向主窗口进行传值和传结构体数据 子窗口界面 主窗口界面 dialog.h #ifndef DIALOG_H #define DIA ...

  4. MFC不同窗口之间传递数据

    一.全局变量法 1)先生成模态对话框. 主窗口 子窗口 2)在主窗口的按钮控件写如下代码 CString global_msg; void Cexample1Dlg::OnBnClickedButto ...

  5. 用WM_COPYDATA消息来实现两个进程之间传递数据

    文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法: 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有   1.使用内存映 ...

  6. PowerBuilder窗口之间传递多参数的方法

    PowerBuilder窗口之间传递多参数的方法 http://www.21tx.com 2002年05月12日 Blog oceanaut 在PowerBuilder中函数OpenWithParm, ...

  7. 【Qt】信号和槽传递自定义结构体

    一.使用信号和槽传递自定义结构体 这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下. 一共有三种方法,可以让结构体在信号和槽之间传递.前两种方法可以让结构体在线程之间传递,最后一种方法只 ...

  8. linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...

    C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0 本贴问题,之前已经提问过一次,当时已经解决了,原贴在这里https://segmentfault.com/q/1 ...

  9. Android在片段之间传递数据

    In this tutorial, we'll be developing an application that contains TabLayout, ViewPager and Fragment ...

  10. android 不同activity之间传递数据

    1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...

最新文章

  1. div中有元素刷新不出来_DNF:神话罐子来了!500个不渝材料就能换,但你刷新不出来...
  2. CentOS升级gcc到4.8.2以支持C++11标准的方法
  3. 《税务登记管理办法》
  4. Scala集合与Java集合的对比
  5. 干货|亲测有效的N倍学习效果笔记法
  6. java定时任务详解
  7. 区块链技术基础语言(三十二):Go语言网络编程(下)
  8. vscode设置背景图片
  9. Binwalk--多重文件查看利器
  10. 一拳超人最强之男手游辅助脚本 快速升级提高提高战力
  11. 全网最有效软考高项十大管理ITTO记忆:宫殿记忆法、主线记忆法、逻辑记忆法、跟踪记忆法、诗词记忆法
  12. 量化投资篇(1):深入浅出量化对冲Alpha基金的操作
  13. Java 对上传文件后缀格式的校验
  14. mac 怎么抓取 iphone 手机 日志
  15. win10系统截图快捷键
  16. HDU_1847 Good Luck in CET-4 Everybody!
  17. 项目动态|Apache Pulsar 2.10.0 版本介绍
  18. 重装系统后笔记本电脑无线wifi怎么连接
  19. itext html to pdf设置边距,iText:设置边距是否有效?
  20. matlab由补码反码原码求值

热门文章

  1. .net byte转java byte_「Java知识收集整理」Java语法的基础
  2. mysql查询每十分钟的数据_sql查询语句查询每10分钟的数据
  3. hive 筛选出数字_后悔没早点学会这几个万能的Excel筛选技巧,这些操作技巧得记牢...
  4. python字符大小写字母转换用那个键_python字符串大小写如何转换
  5. 按月分表(create table)
  6. 小团队Git协作流程
  7. Meteor在手机上运行
  8. 201521123045 《Java程序设计》第7周学习总结
  9. OSGI.NET,请求因HTTP状态404 失败:Not Found
  10. [转]C++ 智能指针详解