终极理解ON_MESSAGE和ON_NOTIFY

------《两种消息发送》--------------------

SendMessage()---->

ON_MESSAGE(注册的消息)

ON_NOTIFY(注册的消息)

SendPoMessage()--->

ON_PO_MESSAGE(注册的消息)

ON_PO_NOTIFY(注册的消息)

=======《两种消息发送》=================

-------《点击趋势图上面的右键频谱图菜单,来获取频谱数据并显示信息页》------------------------

趋势图上面点击操作

<Panel中判断>

点击

左键

右键

左键

通过函数调用方式请求频谱数据RequestWaveFFT(a_pTrend, nLineIndex, nIndex, WM_RC_ALARM_QUERY_VIB_FFT, 2, pTrendDest->GetSafeHwnd());

请求数据需要传入的参数有趋势图、线、点。

在上面这个函数里面,发送一个消息PostPOMessage。

<PO>

ON_PO_MESSAGE(注册的消息)   这里向中间件请求数据

ON_PO_NOTIFY(注册的消息)    这里向操作页发送消息 m_dlgOpPage.SendMessage(WM_RC_ALARM_QUERY_VIB_FFT, wparam, lparam);这里用的是sendmessage

<DlgOpPage中>

可惜只有ON_MESSAGE(注册的消息)  这里直接通过PO的对象来调用po的函数g_pPO->DrawFFT(pData)

<PO里面来画图和显示操作页>

========《点击趋势图上面的右键频谱图菜单,来获取频谱数据并显示信息页》=========================

//附图片

---------------------------------------------------------------------------------------------------------------

......begin......

//***CDlgAxisPosition.cpp

//对话框控件点击

-> CDlgAxisPosition::OnBnClickedBtnStopandrefresh()

//函数调用

-> RequestHisData();

//向指定控件发送异步消息(寄存到消息队列立即返回)

-> g_poAxisPosition->PostPOMessage(POMSG_BH5000_COMMON_VIBTRENDHIS_OFF_GETVIBCHANNSTREND_ID,(LPARAM)in,(WPARAM)out);

//本类中有消息注册的相应函数,执行

-> ON_MESSAGE(POMSG_BH5000_COMMON_VIBTRENDHIS_OFF_GETVIBCHANNSTREND_ID,DrawHisTrend)

-> LRESULT CDlgAxisPosition::DrawHisTrend( WPARAM wParam,LPARAM lParam )

//调用另外类的指定函数

-> g_poAxisPosition->DrawHisTrend(lpIn,lpOut);

//****CAxisPositionPO.cpp

//函数被调用

-> void CAxisPositionPO::DrawHisTrend( ST_COMMON_OFF_GETVIBCHANNSTREND_IN * in_, ST_COMMON_OFF_GETVIBCHANNSTREND_OUT * out_ )

//调用另外类的指定函数

-> m_dlgAxisPosition->RequestHisWaveData(loCurTime);

//***CDlgAxisPosition.cpp

//函数被调用

-> void CDlgAxisPosition::RequestHisWaveData( CBHDateTime dtTime_)

//向指定控件发送异步消息(寄存到消息队列立即返回)

-> g_poAxisPosition->PostPOMessage(POMSG_BH5000_COMMON_AXISTRACK_OFF_GETAXESTRACK_ID,(LPARAM)lpIn,(WPARAM)lpOut);

//****CAxisPositionPO.cpp

//注册消息被调用

-> ON_PO_MESSAGE(POMSG_BH5000_COMMON_AXISTRACK_OFF_GETAXESTRACK_ID,GetAxisHisWave)

-> void CAxisPositionPO::GetAxisHisWave( void *& data,LPARAM lParam, WPARAM wParam )

GetAxisHisWave()---More()

lpFixComm->CreateHead(SERVICE_SERVICE_OFF_GETAXESTRACK);//21008

SERVICE_SERVICE_OFF_GETAXESTRACK通信中间件的消息头

//注册消息被调用

-> ON_PO_NOTIFY(POMSG_BH5000_COMMON_AXISTRACK_OFF_GETAXESTRACK_ID,DrawAxisHisWave)

//***CDlgAxisPosition.cpp

//注册消息

-> ON_MESSAGE(POMSG_BH5000_COMMON_AXISTRACK_OFF_GETAXESTRACK_ID,DrawHisAxisWave)

//执行注册消息

-> LRESULT CDlgAxisPosition::DrawHisAxisWave( WPARAM wParam,LPARAM lParam )

//函数调用

-> g_poAxisPosition->DrawAxisHisWave(lpIn,lpOut);

......end......

终极理解ON_MESSAGE和ON_NOTIFY,码迷,mamicode.com

时间: 2024-12-13 10:24:05

终极理解ON_MESSAGE和ON_NOTIFY的相关文章

ON_COMMAND,ON_MESSAGE和ON_NOTIFY的区别

  ON_COMMAND ON_MESSAGE ON_NOTIFY   处理WM_COMMAND类型的消息 可以处理所有的windows消息,格式是ID,wparam,lparam 处理控件向其父窗口发送的消息   可以用ON_MESSAGE来表示另外两个,但是要做别的额外的操作 WM_COMMAND WM_COMMAND产生的条件:点击菜单, 点击加速键(比如Ctrl+, Alt+),点击子窗口按钮,点击工具栏按钮. WM_COMMAND消息中有两个参 数,wparam.lparam,定义如下

贝叶斯来理解高斯混合模型GMM

最近学习基础算法<统计学习方法>,看到利用EM算法估计高斯混合模型(GMM)的时候,发现利用贝叶斯的来理解高斯混合模型的应用其实非常合适. 首先,假设我们对于贝叶斯比较熟悉,对高斯分布也熟悉.本文将GMM用于聚类来举例. 除了简单的高斯分布,理论上通过组合多个不同的高斯分布可以构成任意复杂的分布函数.如下图所示: 在最大似然,贝叶斯方法与朴素贝叶斯分类中,2.1中提到高斯概率密度用来计算连续变量情况下的朴素贝叶斯概率.该情况下的高斯分布是训练已知,然后对于输入变量求取其概率密度,结合类别的先验

浅显易懂的GMM模型及其训练过程

高斯混合模型GMM是一个非常基础并且应用很广的模型.对于它的透彻理解非常重要.网上的关于GMM的大多资料介绍都是大段公式,而且符号表述不太清楚,或者文笔非常生硬.本文尝试用通俗的语言全面介绍一下GMM,不足之处还望各位指正. 首先给出GMM的定义 这里引用李航老师<统计学习方法>上的定义,如下图: 定义很好理解,高斯混合模型是一种混合模型,混合的基本分布是高斯分布而已. 第一个细节:为什么系数之和为0? PRML上给出过一张图: 这图显示了拥有三个高斯分量的一个维度的GMM是如何由其高斯分量叠

算法设计方法:递归的内涵与经典应用

摘要: 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归.毋庸置疑地,递归确实是一个奇妙的思维方式.对一些简单的递归问题,我们总是惊叹于递归描述问题的能力和编写代码的简洁,但要想真正领悟递归的精髓.灵活地运用递归思想来解决问题却并不是一件容易的事情.本文剖析了递归的思想内涵,分析了递归与循环的联系与区别,给出了递归的应用场景和一些典型应用,并利用递归和非递归的方式解决了包括阶乘.斐波那契

《角斗士》一个帝国的史诗绝唱

公元前27年的世界地理版图如果可以像霍格沃茨里的魔法那样被装裱在一个永远具有生命力的相框里,那么这幅照片注定只有一个名字.是的,罗马. 不可一世的奥古斯都大帝带着他的罗马骑兵将罗马帝国的印记刻在了整个世界近五分之一的地域.埃及女王克莱奥帕特拉那条带领她走向毁灭的毒蛇,见证了一个不 可复制的帝国的诞生.罗马.罗马.罗马.在任何一本世界历史研究著作中,似乎很少有作者能够免俗,在提及这个帝国的名字时,可以不像歌吟咏叹调的那般,赋 予自己热情奔涌的慨叹. 我相信很多热爱历史的人对于世界历史最早的触觉永远

ML_Review_GMM(Ch10)

Note sth about GMM(Gaussian Mixtrue Model) 高斯混合模型的终极理解 高斯混合模型(GMM)及其EM算法的理解 这两篇博客讲得挺好,同时讲解了如何解决GMM参数问题的EM算法,其实GMM式子没有什么高深的地方,都是概率论的东西,主要是构思比较巧妙. 动机: ?GMM是用来拟合某种分布的.哪种?任意一种!当然,前提是参数足够多的情况下,所以实作其实并非拟合任意模型.那么一般什么样的模型会被GMM较好拟合?首先,我们思考一下一维的高斯分布(即正态分布),然后我

【转】ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系

ON_COMMAND 是菜单和工具栏项处理消息的宏 ON_MESSAGE 是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景.在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件的句柄包含在lParam中.由于wParam和 lParam已经满了,当控件要向父窗口发送其它特殊消息同时附带很多信息

ON_MESSAGE和ON_NOTITY再次理解

ON_NOTIFY是控件向其父窗口发送消息处理的宏,ON_COMMAND是菜单和工具栏项处理消息的宏,ON_MESSAGE是处理自定义消息的宏 对这几个消息的理解要先了解一下Window消息的背景. 在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口, 使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wParam中, 控件的句柄包含在lParam中.由于wParam和 lParam已经满了,当控件要向父窗口发送其它特殊消息同时附带很多信息的时

万万没想到用理工科思维理解世界-摘录

万万没想到用理工科思维理解世界-万维钢(同人于野)著 第一章 怎样杀死海星 传统组织就如同蜘蛛,它的智力集中在大脑,只要你把蜘蛛的头去掉,蜘蛛就会死亡.而去中心化组织就如同海星,海星根本就没有头.它的智能分布在身体各处,一旦你打掉它身体的一部分,那个部分甚至可能自己再长成另一个海星. 不过去中心化组织有个关键的弱点:你很难通过这样的组织赚大钱.分权的产业利润低,只有集权才能获得高利润. 怎样杀死海星?<海星与蜘蛛>给了三个策略. 第一个策略是改变环境.既然你们是靠一种意识形态联系在一起,我就让