同一类消息或命令映射到同一个函数

原创 2016年06月01日 13:40:46
共有三类:
ON_COMMAND_RANGE
ON_UPDATE_COMMAND_UI_RANGE
ON_CONTROL_RANGE // takes an additional first parameter: a control-notification message, such as EN_CHANGE.


第一步:
In the .CPP file, add your message-map entry, as shown in the following example:


ON_COMMAND_RANGE(ID_MYCMD_ONE, ID_MYCMD_TEN, &OnDoSomething) //The range of command IDs must be contiguous.
ON_COMMAND_RANGE(ID_COMMAND_RANGECMD1, ID_COMMAND_RANGECMD3, &CChildFrame::OnRangeCmds)
 
ON_UPDATE_COMMAND_UI_RANGE(id1, id2, memberFxn )


ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked) //control-notification messages


第二步:
Add your handler function declaration in the .H file. The following code shows how this might look, as shown below:


public:


afx_msg void OnDoSomething(UINT nID);(== OnButtonClicked)
   
void CRangesView::OnButtonClicked( UINT nID )
{
    int nButton = nID - IDC_BUTTON1;
    ASSERT( nButton >= 0 && nButton < 10 );
    // ...
}
   


afx_msg void OnZoomUpdateUI(CCmdUI *pCmdUI); //图像放缩 更新


void CVCStyleView::OnZoomUpdateUI( CCmdUI *pCmdUI )
{
if (pCmdUI->m_nID == ID_Z00M_25)
{
if (m_zoom == -4)
{
pCmdUI->SetCheck(1);
}else
{
pCmdUI->SetCheck(0);
}

}
if (pCmdUI->m_nID == ID_ZOOM_50)
{
if (m_zoom == -2)
{
pCmdUI->SetCheck(1);
}else
{
pCmdUI->SetCheck(0);
}
}
if (pCmdUI->m_nID == ID_ZOOM_100)
{
if (m_zoom == 1)
{
pCmdUI->SetCheck(1);
}else
{
pCmdUI->SetCheck(0);
}
}
if (pCmdUI->m_nID == ID_ZOOM_200)
{
if (m_zoom == 2)
{
pCmdUI->SetCheck(1);
}else
{
pCmdUI->SetCheck(0);
}
}
if (pCmdUI->m_nID == ID_ZOOM_400)
{
if (m_zoom == 4)
{
pCmdUI->SetCheck(1);
}else
{
pCmdUI->SetCheck(0);
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MFC六大关键技术之消息映射与命令传递(五,六)

题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用。我发觉很多编程的朋友,虽然每天都面对消息,...

MFC六大关键技术之(5)(6)——消息映射与命令传递

MFC六大关键技术之(五)(六)——消息映射与命令传递 题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻...

深入浅出MFC学习笔记(第9章:消息映射与命令传递。)

第九章:消息映射与命令传递。     本章将会对MFC的消息映射和 命令传递机制做深入探讨。     MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindow...

MFC消息映射与命令传递

DECLARE_MESSAGE_MAP宏 在 MFC 几乎每个头文件下(类的最后一行声明),都会有这么几行代码: // 生成的消息映射函数 protected: DECLARE...

vc++消息映射与命令通知

消息的传递与发送是Windows应用程序的核心所在,任何事件的触发与响应均要通过消息的作用才能得以完成。在SDK编程中,对消息的获取与分发主要是通过消息循环来完成的,而在MFC编程中则是通过采取消息映...
  • HiRuyue
  • HiRuyue
  • 2013年07月30日 20:38
  • 972

MFC六大核心机制之五、六:消息映射和命令传递

作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实。所以,我们对于在进行MFC视窗程序设计时经常要...

MFC六大关键技术之——消息映射与命令传递

转载自:http://blog.csdn.net/liyi268/article/details/623391 题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面...

MFC消息映射和命令路由

//wincore.cpp BOOL CWnd::CreateEx(DWORDdwExStyle,LPCTSTRlpszClassName,      LPCTSTR lpszWindow...
  • wishfly
  • wishfly
  • 2013年03月31日 22:48
  • 1492

MFC如何清理和删除一些消息映射函数

平时在做MFC工程时,难免会遇到很多消息没有使用但是却占用了很多地方,我们想删除但是有害怕破坏整个工程的运行,今天就给大家介绍下MFC清理删除消息映射函数的两种方法: 1.手动删除 MFC的消息映射类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同一类消息或命令映射到同一个函数
举报原因:
原因补充:

(最多只允许输入30个字)