第一个是响应打开菜单的命令的
第二个是你打开这个菜单时,处理这个菜单的状态,比如选中、变灰等等。
比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时,对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_UPDATE_COMMAND_UI响应函数里.
UPDATE_COMMAND_UI
处理菜单对应的用户界面显示状态
COMMAND
处理该菜单对应的功能
传统SDK程序要改变选单命令项状态,可以呼叫EnableMenuItem或是 CheckMenuItem,但这使得程序杂乱无章,因为你没有一个固定的位置和固定的原则处理命令项状态。MFC提供一种直觉并且仍旧依赖讯息观念的方式,解决这个问题,这就是UPDATE_COMMAND_UI讯息。其设计理念是,每当选单被拉并尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到UPDATE_COMMAND_UI讯息,这个讯息和WM_COMMAND有㆒样的绕行路线,我们(程序员)只要在适当的类别上放置其处理函式,并在函式上做某些判断,便可决定如何显示命令项。
这种方法的最大好处是,不但把问题的解决方式统化,更因为 Framework传给UPDATE_COMMAND_UI处理程序的参数是个「指向CCmdUI对象的指针」,而CCmdUI对象就代表着对应的选单命令项,因此你只需呼叫
CCmdUI 所准备的,专门用来处理命令项外观的函式(如Enable或SetCheck)即可。我们的工作量大为减轻。
分享到:
相关推荐
1. UPDATE_COMMAND_UI 消息:这是MFC框架内部定义的一个消息,用于处理控件的启用状态和可见性。当你在程序中注册了命令ID,MFC会自动发送`UPDATE_COMMAND_UI`消息到相应的控件,以便它们可以自我更新状态。 2. ...
在MFC对话框程序中添加工具栏以及工具栏上的Button,并使其能够响应UPDATE_COMMAND_UI消息,需要遵循一系列步骤。首先,我们需要理解UPDATE_COMMAND_UI消息的作用,它是MFC框架用来更新UI元素状态的一种机制,比如...
通过ON_WM_COMMAND()和ON_UPDATE_COMMAND_UI()宏可以处理菜单和工具栏的更新及选择事件。 2. 命令ID:每个菜单项和工具栏按钮都有一个唯一的命令ID,用于在消息映射中识别它们。 3. ON_BN_CLICKED:对于工具栏按钮...
3. **ON_UPDATE_COMMAND_UI()宏**:更新UI元素的状态,如禁用不适用的菜单项。 4. **CFile和CDocument类**:处理文件I/O,CDocument用于存储应用程序的数据。 5. **CView和CScrollView类**:视图类的基类,...
2. **定义消息映射**:使用ON_COMMAND、ON_MESSAGE和ON_UPDATE_COMMAND_UI宏将用户界面事件与成员函数关联起来。 3. **实现视图和文档类**:根据需求扩展CDocument和CView类,实现数据处理和显示逻辑。 4. **...
在MFC中,通常通过重载ON_COMMAND或ON_UPDATE_COMMAND宏来处理工具栏按钮的消息。例如: ```cpp ON_COMMAND(IDC_BUTTON1, OnButton1) ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateButton1) ``` 然后,定义处理函数...
菜单设计中,我们需要使用ON_COMMAND消息映射宏来定义各个菜单项的行为,比如"打开文件"、"保存文件"和图形类型的切换。同时,ON_UPDATE_COMMAND_UI宏则用于更新界面状态,确保菜单项的可用性与当前程序状态一致。 ...
- 消息映射:MFC通过ON_MESSAGE、ON_COMMAND等宏定义,将消息与成员函数关联起来,使得消息处理更加直观。 - DoDataExchange:用于控件和数据成员之间的数据交换,常用于对话框类的验证和初始化。 4. **对话框...
对于命令消息,MFC提供了专门的宏,例如`ON_COMMAND()`和`ON_UPDATE_COMMAND_UI()`。 1. **头文件中的消息映射声明** ```cpp #define ID_XXXX 100 afx_msg void OnXxxx(); // 消息映射 afx_msg void ...
总之,C++中的MFC消息处理机制是通过宏和消息映射机制来实现的,它使得开发者能够方便地处理Windows环境下的各种用户交互和系统事件,从而构建功能丰富的桌面应用程序。理解和熟练掌握这些消息处理机制对于进行高效...
首先,在消息映射`ON_COMMAND`或`ON_UPDATE_COMMAND_UI`中定义处理函数,然后实现这些函数来执行相应的操作。例如: ```cpp BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_COMMAND(IDC_MENU_ITEM1, OnMenuItem1) ON_...
综上所述,"MFC-MESSAGE.rar_Mfc message"这份文档可能包含了如何在MFC中定义和处理消息、消息映射的原理、常见消息类型的介绍以及如何处理特定的Windows消息等内容。学习这部分知识对于理解MFC应用程序的运行机制至...
- MFC的消息机制还支持对象间的通信,如通过`ON_UPDATE_COMMAND_UI`宏更新用户界面元素的状态,或者通过`ON_NOTIFY`处理控件的通知消息。 理解并熟练掌握MFC中的RTTI、动态创建和消息机制对于开发高效、可靠的...
- **ON_COMMAND(), ON_UPDATE_COMMAND_UI() 宏**: `ON_COMMAND()`用于处理具体的命令消息,如菜单项的选择;`ON_UPDATE_COMMAND_UI()`则用于更新用户界面的状态,例如启用或禁用某个菜单项。 #### 消息映射的工作...
在MFC中,我们可以使用ON_COMMAND或ON_UPDATE_COMMAND_UI宏来关联菜单项或按钮的事件处理函数。当用户点击特定菜单项时,对应的事件处理函数会被调用,从而实现界面的切换。例如,可以创建新的CFormView实例,并将其...
`ON_UPDATE_COMMAND_UI`消息映射宏用于定义这种更新行为。 7. **通知消息**:控件间的通信常常使用控件通知消息,如`BN_CLICKED`表示按钮被点击。这些消息通过控件的父窗口进行传递,MFC提供了`ON_BN_CLICKED`等...
`OnUpdate`函数通常在响应`UPDATE_COMMAND_UI`消息时被调用。 对话框(Dialog Box)是Windows应用程序中的一个重要组件,它提供了一个独立于主窗口的临时界面,用户可以在其中进行交互。在MFC中,我们通常使用`...
`ON_UPDATE_COMMAND_UI` 和 `ON_COMMAND` 消息映射处理菜单项的状态更新和命令处理。 ```cpp BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //... ON_WM_CREATE() ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, &CMainFrame...
同时,MFC还提供了基于成员变量的事件驱动编程模型,如ON_UPDATE_COMMAND_UI宏用于更新UI状态。 文档《MFC类库详解中文版》很可能包含了关于对话框(CDialog)、文档/视图架构(CDocument、CView、CFrameWnd)、...