ON_MESSAGE(WM_QUERYNEWPALETTE, OnQueryNewPalette) ON_COMMAND(ID_FILE_OPEN, OnFileOpen) ON_COMMAND(ID_FILE_CREATECONTROL, OnFileCreateCtl) ON_COMMAND(ID_FILE_DESTROYCONTROL, OnFileDestroyCtl) ON_COMMAND(ID_FILE_PRINTCONTROL, OnFilePrintctl) ON_COMMAND(ID_FILE_CONVERTCONTROL, OnFileConvertctl) ON_COMMAND(ID_FILE_CONVERT, OnFileConvertdoc) ON_COMMAND(ID_EDIT_ZOOM, OnEditZoom) ON_COMMAND(ID_EDIT_SELANDCOPY, OnEditSelandcopy) ON_COMMAND(ID_EDIT_SEARCH, OnEditSearch) ON_COMMAND(ID_EDIT_SELECT, OnEditSelect) ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
时间: 2023-09-06 14:14:03 浏览: 130
这是一个典型的 MFC(Microsoft Foundation Classes)框架应用程序的消息映射表。每个 ON_COMMAND 宏都对应着一个菜单或工具栏命令的处理函数。以下是各个命令的处理函数:
- `OnFileOpen`:处理文件打开命令。
- `OnFileCreateCtl`:处理创建控件命令。
- `OnFileDestroyCtl`:处理销毁控件命令。
- `OnFilePrintctl`:处理打印控件命令。
- `OnFileConvertctl`:处理转换控件命令。
- `OnFileConvertdoc`:处理转换文档命令。
- `OnEditZoom`:处理缩放命令。
- `OnEditSelandcopy`:处理选择和复制命令。
- `OnEditSearch`:处理搜索命令。
- `OnEditSelect`:处理选择命令。
- `OnEditCopy`:处理复制命令。
这些函数通过消息映射表(message map)与特定的消息关联起来,当特定的消息到达时,对应的函数就会被调用。这种消息驱动的方式是 MFC 框架应用程序的核心机制之一,使得开发者可以方便地响应用户的操作和系统事件。
相关问题
BOOL CMainFrame::OnQueryNewPalette() { // always realize the palette for the active view CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd == NULL) return (FALSE); // no active MDI child frame (no new palette) CView* pView = pMDIChildWnd->GetActiveView(); ASSERT(pView != NULL); // just notify the target view pView->SendMessage(WM_QUERYNEWPALETTE); return (TRUE); }
这段代码是在应用程序的主窗口类 `CMainFrame` 中的 `OnQueryNewPalette` 函数中执行的。让我逐行解释:
- `CMDIChildWnd* pMDIChildWnd = MDIGetActive();`:获取当前活动的 MDI 子窗口。
- `if (pMDIChildWnd == NULL) return (FALSE);`:如果没有活动的 MDI 子窗口,则返回 `FALSE`,表示没有新的调色板。
- `CView* pView = pMDIChildWnd->GetActiveView();`:获取当前活动的子窗口的视图对象。
- `ASSERT(pView != NULL);`:确保获取到有效的视图对象。
- `pView->SendMessage(WM_QUERYNEWPALETTE);`:向目标视图发送 `WM_QUERYNEWPALETTE` 消息,以便通知它有新的调色板。
- `return (TRUE);`:返回 `TRUE`,表示有新的调色板。
这段代码的作用是在查询是否有新的调色板时,始终实现当前活动视图的调色板。它通过向当前活动视图发送 `WM_QUERYNEWPALETTE` 消息来通知它有新的调色板。这样做可以确保在调色板发生改变时,当前活动视图能够适应并进行相应的调色板处理。
阅读全文