BEGIN_MESSAGE_MAP(CMenusDynamicView, CView)
//{{AFX_MSG_MAP(CMenusDynamicView)
ON_COMMAND(ID_OPTIONS_EXTRACOLORS, OnOptionsExtracolors)
ON_COMMAND(ID_OPTIONS_STANDARDCOLORS, OnOptionsStandardcolors)
ON_COMMAND_RANGE(ID_COLORS_BLACK, ID_COLORS_BLUE, OnColors)
ON_COMMAND_RANGE(ID_COLORS_CYAN, ID_COLORS_YELLOW, OnColors)

ON_UPDATE_COMMAND_UI_RANGE(ID_COLORS_BLACK, ID_COLORS_BLUE, OnUpdateColors)
ON_UPDATE_COMMAND_UI_RANGE(ID_COLORS_CYAN, ID_COLORS_YELLOW, OnUpdateColors)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_EXTRACOLORS, OnUpdateOptions)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_STANDARDCOLORS, OnUpdateOptions)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()其中的OnOptionsExtracolors   OnOptionsStandardcolors   OnColors
      OnUpdateColors   OnUpdateOptions都在什么时候调用它,能给我详细的讲解一下吗?

解决方案 »

  1.   

    说几个吧, 这些都是消息映射来的, 不是函数
    ON_COMMAND(ID_OPTIONS_EXTRACOLORS, OnOptionsExtracolors)
    表示将点击 ID为 ID_OPTIONS_EXTRACOLORS的按钮的事件映射到 OnOptionsExtracolors中下同
    ON_COMMAND(ID_OPTIONS_STANDARDCOLORS, OnOptionsStandardcolors)群映射
    ON_COMMAND_RANGE(ID_COLORS_BLACK, ID_COLORS_BLUE, OnColors)
    将 ID号 从 ID_COLOS_BLACK到 ID_COLORS_BLUE的所有按钮的事件都映射到 OnColors中ON_UPDATE_COMMAND_UI
    更新命令
      

  2.   

    ON_COMMAND 和 ON_COMMAND_RANGE 都是处理消息命令的,即用户点击menu item后系统会调用在该宏里映射的函数,那么它们的区别是,ON_COMMAND只能处理一个 item(id) 的命令,而 ON_COMMAND_RANGE 可以处理指定 item(id) 范围的命令,例如上面例子中 OnOptionsExtracolors 只能处理 ID_OPTIONS_EXTRACOLORS item 响应的命令,而 OnColors 可以处理ID_COLORS_BLACK 到 ID_COLORS_BLUE 之间所有 item 命令,假设:
    #define ID_COLORS_BLACK 0x10
    #define ID_COLORS_BLUE  0x20
    那么 OnColors 可以响应 0x10~0x20 之间所有的命令ON_UPDATE_COMMAND_UI 和 ON_UPDATE_COMMAND_UI_RANGE 的作用是让用户来选择处理菜单 item 的状态,每当显示菜单时,都会对每个item调用该宏映射的函数,一般的作用是用来 enable item 或者 disable item,它们的区别同上面的一样,一个只能处理一个 item,另一个可以处理一组 item
      

  3.   

    http://blog.csdn.net/laiyiling/archive/2004/08/27/87027.aspx