MFC窗口之间传递数据(结构体)
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窗口之间传递数据(结构体)相关推荐
- iphone 使用委托(delegate)在不同的窗口之间传递数据
iphone 使用委托(delegate)在不同的窗口之间传递数据 在IOS里两个UIView窗口之间传递参数方法有很多,比如 1.使用SharedApplication,定义一个变量来传递. 2.使 ...
- VB如何在窗口之间传递数据?
有多种方法可以在窗口之间传递数据,比如: 1.在模块文件(Module)中声明一个全局公共变量,然后在其他窗体中就可以通过这个变量来存取数据了,如: 在模块文件中声明变量a Public a as s ...
- Qt窗口之间传值和结构体数据
简单明了,看效果+看代码 主窗口向子窗口进行传值和传结构体数据 子窗口向主窗口进行传值和传结构体数据 子窗口界面 主窗口界面 dialog.h #ifndef DIALOG_H #define DIA ...
- MFC不同窗口之间传递数据
一.全局变量法 1)先生成模态对话框. 主窗口 子窗口 2)在主窗口的按钮控件写如下代码 CString global_msg; void Cexample1Dlg::OnBnClickedButto ...
- 用WM_COPYDATA消息来实现两个进程之间传递数据
文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法: 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 1.使用内存映 ...
- PowerBuilder窗口之间传递多参数的方法
PowerBuilder窗口之间传递多参数的方法 http://www.21tx.com 2002年05月12日 Blog oceanaut 在PowerBuilder中函数OpenWithParm, ...
- 【Qt】信号和槽传递自定义结构体
一.使用信号和槽传递自定义结构体 这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下. 一共有三种方法,可以让结构体在信号和槽之间传递.前两种方法可以让结构体在线程之间传递,最后一种方法只 ...
- linux下c语言线程传参数,【linux】C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...
C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0 本贴问题,之前已经提问过一次,当时已经解决了,原贴在这里https://segmentfault.com/q/1 ...
- Android在片段之间传递数据
In this tutorial, we'll be developing an application that contains TabLayout, ViewPager and Fragment ...
- android 不同activity之间传递数据
1> 不同activity之间传递数据: Intent intent=new Intent(); intent.setClass(activity1.this,activity2.class); ...
最新文章
- div中有元素刷新不出来_DNF:神话罐子来了!500个不渝材料就能换,但你刷新不出来...
- CentOS升级gcc到4.8.2以支持C++11标准的方法
- 《税务登记管理办法》
- Scala集合与Java集合的对比
- 干货|亲测有效的N倍学习效果笔记法
- java定时任务详解
- 区块链技术基础语言(三十二):Go语言网络编程(下)
- vscode设置背景图片
- Binwalk--多重文件查看利器
- 一拳超人最强之男手游辅助脚本 快速升级提高提高战力
- 全网最有效软考高项十大管理ITTO记忆:宫殿记忆法、主线记忆法、逻辑记忆法、跟踪记忆法、诗词记忆法
- 量化投资篇(1):深入浅出量化对冲Alpha基金的操作
- Java 对上传文件后缀格式的校验
- mac 怎么抓取 iphone 手机 日志
- win10系统截图快捷键
- HDU_1847 Good Luck in CET-4 Everybody!
- 项目动态|Apache Pulsar 2.10.0 版本介绍
- 重装系统后笔记本电脑无线wifi怎么连接
- itext html to pdf设置边距,iText:设置边距是否有效?
- matlab由补码反码原码求值
热门文章
- .net byte转java byte_「Java知识收集整理」Java语法的基础
- mysql查询每十分钟的数据_sql查询语句查询每10分钟的数据
- hive 筛选出数字_后悔没早点学会这几个万能的Excel筛选技巧,这些操作技巧得记牢...
- python字符大小写字母转换用那个键_python字符串大小写如何转换
- 按月分表(create table)
- 小团队Git协作流程
- Meteor在手机上运行
- 201521123045 《Java程序设计》第7周学习总结
- OSGI.NET,请求因HTTP状态404 失败:Not Found
- [转]C++ 智能指针详解