终极理解ON_MESSAGE和ON_NOTIFY

144 篇文章 7 订阅
60 篇文章 0 订阅

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


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......

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值