如何在不同的类之间传递信息?

其实就是理清类的输入输出关系。换言之,你要明确以下几点:

1.程序的主函数在哪里,接口在哪里;
2.由主函数所引出的程序执行顺序是什么,你所储存的数据在哪里初始化;
3.你数据初始化所在的位置是什么类,这个类联系到其他类的时候如何传递已有的数据。

简单类型

在C++中长久保存的简单类型可以直接用类引用的方式进行赋值:

class C_UDP_Socket : public CSocket
{public:CString SAVE_pathName;CString SAVE_fileName;CString RecAddr;unsigned int port;virtual void OnReceive(int nErrorCode);          // 客户端将服务器转发来的消息在窗口中显示,
};
// CMFCCSVSENDDlg 对话框
class CMFCCSVSENDDlg : public CDialogEx
{// 构造
public:CMFCCSVSENDDlg(CWnd* pParent = nullptr);    // 标准构造函数
public:C_UDP_Socket Host_CSocket;C_UDP_Socket Guest_CSocket;CString SAVE_pathName;CString SAVE_fileName;
};
void CMFCCSVSENDDlg::OnBnClickedGet()
{Host_CSocket.Create(H_port_i, SOCK_DGRAM, C_H_IP);Host_CSocket.SAVE_pathName = SAVE_pathName;Host_CSocket.SAVE_fileName = SAVE_fileName;
}

这样就把CString SAVE_pathName;CString SAVE_fileName;这两个简单类型的变量传递出去了。

控件之间的消息传递

由于MFC主程序的运行逻辑,你无法在一个类中完全控制另一个类(控件)。控件的响应(回调函数),全部都是由MFC主程序控制的,你自己控制不了,所以此时,控件之间的信息传递需要借助MFC的消息来建立监听:

1.建立新的MFC消息,由控件产生消息;
2.发送消息;
3.拟确定接收消息的MFC控件写入消息回调函数;

说白了就是APIPostMessage函数,跨类、跨文档等传输消息都用此方法。

//消息定义
#define UDP_SEND                               1200
#define UDP_RECEIVE                       1201//MESSAGE_MAP
BEGIN_MESSAGE_MAP(CMFCMSGDlg, CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(send, &CMFCMSGDlg::OnBnClickedsend)ON_BN_CLICKED(change, &CMFCMSGDlg::OnBnClickedchange)ON_MESSAGE(UDP_SEND, On_UDP_SEND)//定义在此处ON_MESSAGE(UDP_RECEIVE, On_UDP_RECEIVE)//定义在此处
END_MESSAGE_MAP()//定义响应函数
afx_msg LRESULT CMFCUDPDlg::On_UDP_SEND(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT CMFCUDPDlg::On_UDP_RECEIVE(WPARAM wParam, LPARAM lParam);//定义发送消息函数
void CMFCMSGDlg::OnBnClickedsend()
{// TODO: 在此添加控件通知处理程序代码MessageBox(_T("SendMsg"));::PostMessage(AfxGetMainWnd()->GetSafeHwnd(), UDP_SEND, (WPARAM)UDP_SEND, (LPARAM)0);
}

打怪升级之如何在MFC不同的类之间传递信息相关推荐

  1. 深入dos编程_编程入门先要学什么?打怪升级走起来!

    1.如果你能够熟练的使用Windows的话,你就已经可以开始你的程序生涯了,打怪升级走起来! 2.首先从C语言开始.有的朋友可能认为C语言太难了,应该从VB开始.虽然,对于一个初学者来说,用一些控件堆 ...

  2. cocos2d-html5 -- 打怪升级之路

    参考:http://www.cocoachina.com/bbs/read.php?keyword=cocos2d&tid=152450 管理提醒: 本帖被 gagaga 从 苹果开发者综合议 ...

  3. 如何在MFC中调用CUDA

    如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...

  4. 详解Linux运维工程师打怪升级篇

    详解 Linux 运维工程师打怪升级篇 积累经验篇 做运维也快4年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师 是从一个呆逼进化为苦逼再成长为牛逼 ...

  5. 如何在MFC中读写配置文件

    如何在MFC中读写配置文件 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI ...

  6. 为了让AI不断打怪升级,DeepMind打造了一个“元宇宙”

    作者 | 青暮 DeepMind又冷不丁给了我们一个小惊喜. 我们都知道,强化学习苦于泛化能力差,经常只能针对单个任务来从头开始学习. 像DeepMind之前开发的AlphaZero,尽管可以玩转围棋 ...

  7. Halcon初学者知识 【13】如何在MFC中调用Halcon代码

    要知道如何在MFC中调用Halcon代码,需要以下知识点: 在VC++2019的工程中,配置Halcon环境[请看此文] Halcon代码如何导出成C++代码 如何拆解halcon转换成C++的代码, ...

  8. 运维工程师打怪升级进阶之路 V2.0

    很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是有经验的职场运维工程师们,都反馈此系列文章非常不错! 命名:<运维工程师打怪升级之路> 版本:V1.0 ...

  9. 模型压缩:模型量化打怪升级之路-工具篇

    本文转载自商汤泰坦公开课. 1/ 最近发现一些还在学校读书的同学非常关注一个量化工作精度的高低,读过我上篇分享(模型压缩:模型量化打怪升级之路 - 0 序章)的同学应该知道,部分学术界的工作与工业界的 ...

最新文章

  1. 深入了解父类引用指向子类
  2. gradle入门,安卓gradle入门
  3. Android Studio之提示Unable to delete directory ‘*****\MyApplication\app\build‘
  4. 你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...
  5. cuisineroyale服务器所在位置,cuisine royale进不去怎么办?原因及解决办法分享
  6. [AT2699]Flip and Rectangles
  7. python 新建文件 hdfs_python基础操作以及hdfs操作
  8. SpringMVC自学日志02(初识SpringMVC)
  9. 超分辨率分析(四)--Deep Image Prior
  10. uwsgi模式_uWSGI / Pylons的开发模式(重新加载新代码)
  11. spring batch(批处理)
  12. 习惯自律错误让我们真正成长
  13. stata怎么画分类图_Stata怎么画直方图或折线图-Stata教程
  14. 达梦数据库(简称DM)的初级教程分享
  15. c语言试题1答案,c语言试题1有答案
  16. 【分享】“飞书第三方“在集简云平台集成应用的常见问题与解决方案
  17. js的dom操作,onmouseover事件,onmouseleave事件,定时器
  18. 人工智能(AI)背后人工的力量——数据标注
  19. 国外php开源网站源码,国外收藏的一款免费PHP极简云网盘源码
  20. python matplotlib画三维折线图

热门文章

  1. 涂鸦T2-U开发板快速入门
  2. Python期末课程设计
  3. Dockerfile编写、Dockerfile常用命令
  4. Fast and Accurate Detection of Unknown Tags for RFID Systems – Hash Collisions are Desirable 翻译
  5. 家中的电视 java,家里面的卧室到底适不适合安装电视机?
  6. android扔骰子代码,Android实现掷骰子效果
  7. 2020-用多通道卷积神经网络学习单类特征用于人脸表现攻击检测
  8. Xiaohe-LeetCode 237 Delete Node in a Linked List
  9. 嵌入式Linux小项目之图片编解码播放器学习导读
  10. 计算机组装与维护工匠精神,工匠精神在细微处