TN022:标准命令实现
备注
以下技术声明,则它在联机文档,首先包括了不更新。因此,某些过程和主题可能已过时或不正确。有关最新信息,建议您搜索议题在联机文档的索引。
此说明描述了 MFC 提供的标准命令实现 2.0。 ,因为它描述用于的框架实现许多标准命令,请首先读取 技术说明 21 。
此说明假定 MFC 体系结构、 API 和常用编程的操作知识。 文档以及仅未记录的 “实现” API 所述。 这是如何不是起始位置了解函数或到 MFC 的过程。 引用 Visual C++ 一般信息以及有关文档的 API 详细信息。
问题
MFC 定义在头文件 AFXRES.H. 的许多标准命令 ID。 结构使用这些命令支持不同。 了解框架在位置以及这些类将处理这些命令不仅将演示框架如何在内部工作,但提供有用的信息有关如何自定义标准实现和指导您要实现自己的命令处理程序的几个技术。
此方法声明内容
每个命令 ID 在两个节中所述:
标题:冒号 (例如, “保存当前文档”) 分隔的命令的用途 (例如, ID_FILE_SAVE) 及后跟的命令 ID 的符号名。
类实现命令的一个或多个段落,描述,以及默认实现
大多数默认命令实现是预先安装在结构的基类消息映射。 具有要求在派生的类的显式连结的某些命令实现。 这些描述在 “说明”下方。 如果在 AppWizard 选择了正确的选项,这些默认处理程序对于将连接生成的主干应用程序的。
命名约定
标准命令按照一个简单的命名约定尽可能建议您使用。 大多数标准命令位于应用程序的菜单栏的标准封送处理。 命令的符号名从 “标准弹出菜单名称”开始执行的 ID_,后跟菜单项名称。 符号名与下划线区分词义的大写。 对于没有标准菜单项名称的命令,一个逻辑命令名是定义的开始从 “ID_” (例如, ID_NEXT_PANE)。
我们使用前缀 “ID_”表示旨在绑定到菜单项、工具栏按钮,或其他命令用户界面对象的命令。 处理 “ID_”命令的命令处理程序应使用 ON_COMMAND ,并且 MFC 的 ON_UPDATE_COMMAND_UI framework 命令体系结构。
建议您为不按照结构并不需要菜单特定代码启用和禁用了菜单项使用标准 “IDM_”前缀。 当然特定命令应是小下面 MFC 命令体系结构菜单的数字不但使命令处理程序的更强大 (因为它们与工具栏一起使用),但允许命令处理程序代码可重用。
ID 范围
有关更多详细信息请参见 技术说明 20 在使用 MFC 中的 ID 范围。
MFC 标准命令在范围 0xE000 会对 0xEFFF。 ,因为它们可能会发生在库,的将来版本中的更改不要依赖于这些 ID 的特定值。
应用程序应定义其在范围 0x8000 命令来 0xDFFF。
标准命令 ID
对于每个命令 ID,可以在文件 PROMPTS.RC 找到的一个标准邮件行提示字符串。 该菜单提示的字符串 ID 必须与命令 ID 的.
ID_FILE_NEW 创建新/空文档。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnFileNew 根据数字实现此命令以不同方式文档在应用程序的模板。 如果只有一 CDocTemplate, CWinApp::OnFileNew 将创建该类型的新文档,并设置相应帧和视图类。
如果有多个 CDocTemplate, CWinApp::OnFileNew 将提示具有一个可文件类型使用自己的对话框 (AFX_IDD_NEWTYPEDLG) 用户选择。 选定的 CDocTemplate 用于创建文档。
ID_FILE_NEW 的通用自定义是提供不同,并且更图形的可选文件类型。 在您的消息映射可以实现自己的 CMyApp::OnFileNew 并将其放入而不是 CWinApp::OnFileNew。 不需要调用基类实现。
ID_FILE_NEW 的另一个常见自定义用于创建每个类型的文档提供单独的命令。 在这种情况下应定义新的命令 ID,如 ID_FILE_NEW_CHART 和 ID_FILE_NEW_SHEET。
ID_FILE_OPEN 打开现有文档。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnFileOpen 具有调用 CWinApp::DoPromptFileName 的一个非常简单的实现后跟 CWinApp::OpenDocumentFile 与文件的文件或路径名打开。 CWinApp 实现实例 DoPromptFileName 引发标准 FileOpen 对话框并用获得的文件扩展名加载它从当前文档模板。
ID_FILE_OPEN 的通用自定义的自定义 FileOpen 对话框或添加其他文件筛选器。 建议使用此方法的方式自定义此来替换默认实现用您的 FileOpen 对话框,并调用与文件或路径名的 CWinApp::OpenDocumentFile 。 不需要调用基类。
ID_FILE_CLOSE 关闭当前打开文档。
CDocument::OnFileClose 调用 CDocument::SaveModified 提示用户保存文档,如果修改了然后调用 OnCloseDocument。 所有结束逻辑,包括销毁文档,在 OnCloseDocument 实例完成。
备注
ID_FILE_CLOSE 通过 WM_CLOSE 消息或 SC_CLOSE 系统命令不同发送到文档框架窗口。,仅当这是显示文档,的最后一个框架窗口关闭窗口将关闭文档。关闭与 ID_FILE_CLOSE 的文档不仅将关闭文档,但关闭下显示文档的所有框架窗口。
ID_FILE_SAVE 保存当前文档。
实现用于 OnFileSave 和 OnFileSaveAs使用的 helper 例程 CDocument::DoSave 。 即如果保存在之前尚未保存的文档 (它没有路径名,在 FileNew) 或从只读读取文档, OnFileSave 逻辑将象 ID_FILE_SAVE_AS 命令并要求用户提供新的文件名。 实际处理打开文件,并执行保存通过虚函数 OnSaveDocument执行。
有两个常见原因自定义 ID_FILE_SAVE。 对于文档不保存您的用户界面中,移除 ID_FILE_SAVE 菜单项和工具栏按钮。 还请确保即从错误将文档 (不要调用 CDocument::SetModifiedFlag),并且框架不会导致文档保存。 除磁盘文件外,还提供该文档保存在某处,定义该操作的一个新的命令。
在 COleServerDoc, ID_FILE_SAVE 用于保存的文件 (用于常规文档) 和文件更新使用 (对于嵌入文档)。
如果文档数据在单独的磁盘文件存储,但是,您不要使用默认 CDocument 序列化实现,应重写 CDocument::OnSaveDocument 而不是 OnFileSave。
ID_FILE_SAVE_AS 保存当前文件在不同的文件名下。
CDocument::OnFileSaveAs 实现使用 CDocument::DoSave helper 例程和 OnFileSave相同。 文档,如果没有文件名在保存前, OnFileSaveAs 命令已处理正 ID_FILE_SAVE 。 COleServerDoc::OnFileSaveAs 实现逻辑保存的文档数据文件或保存服务器文档表示在其他应用程序中的一 OLE 对象为单独的文件。
如果自定义 ID_FILE_SAVE逻辑,您可能希望的方式自定义 ID_FILE_SAVE_AS 或 “保存操作”不能应用于文档。 ,如果不需要的,可以从的菜单栏移除菜单项。
ID_FILE_SAVE_COPY_AS 保存一个副本当前文件具有新名称。
COleServerDoc::OnFileSaveCopyAs 实现类似于 CDocument::OnFileSaveAs,除此之外,文档对象 “不在保存之后附加”到基础文件。 也就是说,如果内存中 “修改了”,在 “仍然修改保存,则”之前。 此外,此命令不会对在文档或标题的效果存储的路径名称。
ID_FILE_UPDATE 通知容器保存嵌入的文档。
COleServerDoc::OnUpdateDocument 实现 notifiies 容器应当保存嵌入。 容器然后调用适当的 OLE API 以保存该嵌入对象。
ID_FILE_PAGE_SETUP 调用特定的页面设置/格式对话框。
当前对于此对话框没有标准的,因此,框架没有此命令的默认实现。
如果选择实现此命令,建议您使用此命令 ID.
ID_FILE_PRINT_SETUP 调用标准的打印设置对话框。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
此命令调用允许用户自定义打印机,并且至少此的打印文档集的标准的打印设置对话框或至多所有本应用程序文档。 必须使用控制面板更改整个系统的默认打印机设置。
CWinApp::OnFilePrintSetup 具有创建 CPrintDialog 对象并调用 CWinApp::DoPrintDialog 实现功能的一个非常简单的实现。 将应用程序默认打印机设置。
若要自定义此命令的常见需要允许每个文档打印机设置,应存储与文档,在保存。 若要执行应该将 CDocument 类的消息地图处理程序创建一 CPrintDialog 对象,初始化其与适当的打印机属性的此 (通常 hDevMode 和 hDevNames),请调用 CPrintDialog::DoModal, 并保存更改的打印机设置。 对于一次可靠的实现,您应查看 CWinApp::DoPrintDialog 的实现用于检测错误和 CWinApp::UpdatePrinterSelection 进程易于默认和跟踪系统打印机更改。
ID_FILE_PRINT 标准的打印当前文件
备注
您必须连接到您的 CView派生类的启用此功能的消息映射。
此命令打印更正确当前文件或者,开始晒印方法,涉及调用标准的打印对话框并运行打印引擎。
CView::OnFilePrint 实现此命令和主输出循环。 它调用虚 CView::OnPreparePrinting 提示具有打印对话框的用户。 然后准备输出 DC 转到打印机,则引发打印进度对话框 (AFX_IDD_PRINTDLG),并且发送 StartDoc 转义到打印机。 CView::OnFilePrint 还包含母版页面向打印循环。 对于每页,都会调用虚 CView::OnPrepareDC 后跟 StartPage 转义并调用该页的虚拟 CView::OnPrint 。 完成后,虚拟 CView::OnEndPrinting 调用,并且,打印进度对话框关闭的。
MFC 打印体系结构设计挂钩在打印和打印预览的多种不同方式。 您通常会发现各种 CView 可重写的功能足够为所有页面面向打印作业。 对于使用的应用程序打印机对非页仅将输出,如果发现需要替换 ID_FILE_PRINT 实现。
ID_FILE_PRINT_PREVIEW Enter 的打印预览模式当前文件。
备注
您必须连接到您的 CView派生类的启用此功能的消息映射。
CView::OnFilePrintPreview 通过调用文档的 helper 函数启动打印预览模式 CView::DoPrintPreview。 正 OnFilePrint 是打印循环的,主要引擎CView::DoPrintPreview 是打印预览循环的主要引擎。
打印预览操作可自定义以各种方式传递不同的参数设置 DoPrintPreview。 请参见 技术说明 30,讨论某些打印预览详细信息和如何自定义。
命令 ID 的ID_FILE_MRU_FILE1…**FILE16 **的大小文件的 MRU list。
CWinApp::OnUpdateRecentFileMenu 是之一。 ON_UPDATE_COMMAND_UI 结构的更高级使用的更新命令 UI 处理程序。 在的菜单资源,只需定义与 id(-4) ID_FILE_MRU_FILE1的单个菜单项。 菜单项保持最初禁用。
MRU 列表增大,多个菜单项添加到列表中。 标准 CWinApp 实现默认为四最近使用的文件的标准限制。 可以通过调用具有更大或更小的值 CWinApp::LoadStdProfileSettings 更改默认值。 MRU 在应用程序的 .INI 文件列表存储。 列出应用程序的 InitInstance 功能加载,如果调用 LoadStdProfileSettings和保存,当应用程序退出时。 MRU 更新命令 UI 处理程序还会将绝对路径为显示的相对路径 " 文件 " 菜单。
CWinApp::OnOpenRecentFile 是执行实际命令的 ON_COMMAND 处理程序。 它从 MRU 获取文件名列表并调用 CWinApp::OpenDocumentFile,完成打开文件的所有工作,并更新 MRU 列表。
不建议使用此命令处理程序的自定义。
ID_EDIT_CLEAR 清除当前选定内容
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
使用 CEdit::Clear,CEditView 提供此命令的实现。 ; 如果没有当前选择,则命令将禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_CLEAR_ALL 清除整个文档。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
如果选择实现此命令,建议您使用此命令 ID. 有关示例实现参见 MFC 教程示例 自由曲线 。
ID_EDIT_COPY 复制当前选择到剪贴板。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,使用 CEdit::Copy,复制当前选定的文本复制到剪贴板为 CF_TEXT。 ; 如果没有当前选择,则命令将禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_CUT 剪切当前选择到剪贴板。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,使用 CEdit::Cut,剪切当前选定的文本复制到剪贴板为 CF_TEXT。 ; 如果没有当前选择,则命令将禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_FIND 开始查找操作,生成无模式查找对话框。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,调用实现 helper 函数 OnEditFindReplace 使用,并存储前面的 " 查找/替换在私有实现变量的设置。 CFindReplaceDialog 类用于管理提示的用户无模式对话框。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_PASTE 插入当前剪贴板内容。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,复制替换选定文本的当前剪贴板数据使用 CEdit::Paste。 ; 如果在剪贴板,的 CF_TEXT 命令被禁用。
COleClientDoc 为该命令提供一个更新命令 UI 处理程序。 如果剪贴板不包含一个可嵌入的 OLE 项/对象,则命令将被禁用。 您需要编写处理程序实际命令以执行实际粘贴。 如果您的 OLE 应用程序还可以粘贴其他格式,则应该提供您的意图自己的更新命令 UI 处理程序或文档 (即某处在命令目标路由的 COleClientDoc 之前)。
如果选择实现此命令,建议您使用此命令 ID.
对于替换标准 OLE 实现中,使用 COleClientItem::CanPaste。
从当前剪贴板的链接 content ID_EDIT_PASTE_LINK 插入。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
COleDocument 为该命令提供一个更新命令 UI 处理程序。 如果剪贴板不包含可连接的 OLE 项/对象,则命令将被禁用。 您需要编写处理程序实际命令以执行实际粘贴。 如果您的 OLE 应用程序还可以粘贴其他格式,则应该提供您的意图自己的更新命令 UI 处理程序或文档 (即某处在命令目标路由的 COleDocument 之前)。
如果选择实现此命令,建议您使用此命令 ID.
对于替换标准 OLE 实现中,使用 COleClientItem::CanPasteLink。
当前剪贴板对于可选内容的 ID_EDIT_PASTE_SPECIAL 插入。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。 MFC 不提供此对话框。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_REPEAT 重复最后一个操作。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现重复最后查找操作。 使用最后查找的私有实现变量。 ,如果查找不能尝试使用命令,禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_REPLACE 开始替换操作,以无模式对话框替换。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,调用实现 helper 函数 OnEditFindReplace 使用,并存储前面的 " 查找/替换在私有实现变量的设置。 CFindReplaceDialog 类用于管理提示用户的无模式对话框。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_SELECT_ALL 选择整个文档。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
CEditView 提供此命令的实现,选择文档中的所有文本。 ; 如果没有选择,的文本命令是禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_UNDO 移除最后一个操作。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
使用 CEdit::Undo,CEditView 提供此命令的实现,。 ,如果 CEdit::CanUndo 返回 FALSE,则命令将禁用。
如果选择实现此命令,建议您使用此命令 ID.
ID_EDIT_REDO 重做次操作。
目前没有此命令的标准实现。 必须实现此每 CView的派生类。
如果选择实现此命令,建议您使用此命令 ID.
ID_WINDOW_NEW 打开中的另一个窗口文档。
CMDIFrameWnd::OnWindowNew 实现此功能强大的功能使用文档模板当前文件创建包含另一个视图的另一个帧当前文件。
象大多数多个; 如果 (MDI)没有任何活动的 MDI 子窗口,文档界面 " 窗口 " 菜单命令,该命令已禁用。
不建议使用此命令处理程序的自定义。 如果希望提供创建附加视图或框架窗口的命令,您可能还好些开发自己的命令。 可以克隆从 CMDIFrameWnd::OnWindowNew 的代码和修改其转换为特定框架和视图类您希望。
ID_WINDOW_ARRANGE 排列图标在 MDI 窗口的底部。
CMDIFrameWnd 实现在实现 helper 函数 OnMDIWindowCmd的此标准 MDI 命令。 因此此帮助器映射命令 ID 传递到 MDI 窗口消息,并且可以共享许多代码。
象大多数 MDI 窗口菜单命令,因此,如果没有活动 MDI 子窗口,则命令将禁用。
不建议使用此命令处理程序的自定义。
ID_WINDOW_CASCADE 层叠窗口,使其重叠。
CMDIFrameWnd 实现在实现 helper 函数 OnMDIWindowCmd的此标准 MDI 命令。 因此此帮助器映射命令 ID 传递到 MDI 窗口消息,并且可以共享许多代码。
象大多数 MDI 窗口菜单命令,因此,如果没有活动 MDI 子窗口,则命令将禁用。
不建议使用此命令处理程序的自定义。
ID_WINDOW_TILE_HORZ 水平平铺窗口。
此命令在 CMDIFrameWnd 实现与 ID_WINDOW_CASCADE,除此之外,不同的 MDI 窗口消息的操作使用。
应选择该默认平铺应用程序的方向。 您可以通过更改窗口的 ID 执行此 “平铺”菜单项。 ID_WINDOW_TILE_HORZ 或 ID_WINDOW_TILE_VERT。
ID_WINDOW_TILE_VERT 垂直平铺窗口。
此命令在 CMDIFrameWnd 实现与 ID_WINDOW_CASCADE,除此之外,不同的 MDI 窗口消息的操作使用。
应选择该默认平铺应用程序的方向。 您可以通过更改窗口的 ID 执行此 “平铺”菜单项。 ID_WINDOW_TILE_HORZ 或 ID_WINDOW_TILE_VERT。
ID_WINDOW_SPLIT 到拆分器的键盘界面。
CView 处理 CSplitterWnd 实现使用此命令。 如果该视图是拆分窗口的一部分,则此命令将委托给实现功能 CSplitterWnd::DoKeyboardSplit。 这将使得键盘用户拆分或 unsplit 拆分窗口的模式上拆分器。
,如果该视图不在拆分,此命令将被禁用。
不建议使用此命令处理程序的自定义。
ID_APP_ABOUT 调用对话框。
没有应用程序的标准实现有关框。 默认 AppWizard 创建的应用程序将创建应用程序的自定义对话框类并将其用作您的框。 AppWizard 还将编写处理此命令和调用对话框的常用的命令处理程序。
您几乎总是实现此命令。
ID_APP_EXIT 退出应用程序。
CWinApp::OnAppExit 处理此命令通过发送 WM_CLOSE 信息到应用程序的主窗口。 标准关闭应用程序 (错误的文件的提示等) 由 CFrameWnd 实现。
不建议使用此命令处理程序的自定义。 CWinApp::SaveAllModified 或 CFrameWnd 结束逻辑建议重写。
如果选择实现此命令,建议您使用此命令 ID.
ID_HELP_INDEX 列表帮助主题从 .HLP 文件。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnHelpIndex 处理此命令通过常用调用 CWinApp::WinHelp。
不建议使用此命令处理程序的自定义。
ID_HELP_USING 显示的帮助涉及如何使用帮助。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnHelpUsing 处理此命令通过常用调用 CWinApp::WinHelp。
不建议使用此命令处理程序的自定义。
ID_CONTEXT_HELP 输入 SHIFT-F1 帮助模式。
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnContextHelp 处理此命令通过设置帮助模式光标,输入一个模式循环和等待用户选择窗口获取帮助。 有关更多详细信息请参见 技术说明 28 在 MFC 帮助实现。
不建议使用此命令处理程序的自定义。
ID_HELP 对当前上下文的帮助
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
CWinApp::OnHelp 处理此命令通过获取当前应用程序上下文的正确帮助上下文。 此处理简单的相关帮助,在消息框中显示帮助等。 有关更多详细信息请参见 技术说明 28 在 MFC 帮助实现。
不建议使用此命令处理程序的自定义。
ID_DEFAULT_HELP 显示默认上下文的帮助
备注
您必须连接到您的 CWinApp派生类的启用此功能的消息映射。
此命令通常映射到 CWinApp::OnHelpIndex。
可以提供其他命令处理程序默认 helper 和帮助索引之间的区别是希望。
ID_NEXT_PANE 转到下一个窗格
CView 处理 CSplitterWnd 实现使用此命令。 如果该视图是拆分窗口的一部分,则此命令将委托给实现功能 CSplitterWnd::OnNextPaneCmd。 这会将活动视图移到拆分器的下一个窗格。
此命令被禁用,如果该视图不在拆分或未转到的下一个窗格。
不建议使用此命令处理程序的自定义。
ID_PREV_PANE 转到个窗格
CView 处理 CSplitterWnd 实现使用此命令。 如果该视图是拆分窗口的一部分,则此命令将委托给实现功能 CSplitterWnd::OnNextPaneCmd。 这会将活动视图移到拆分个窗格。
此命令被禁用,如果该视图不在拆分或未转到以前的窗格。
不建议使用此命令处理程序的自定义。
ID_OLE_INSERT_NEW 插入一个新的 OLE 对象
目前没有此命令的标准实现。 必须实现此您的 CView的 - 要插入的派生类具有新的 OLE 项/对象在当前选择。
所有 OLE 客户端应用程序应实现此命令。 AppWizard,与 OLE 选项,在您的视图类将创建 OnInsertObject 的一个主干实现必须完成。
有关此命令的完整实现参见 MFC OLE 示例 OCLIENT 示例。
ID_OLE_EDIT_LINKS 编辑 OLE 链接
COleDocument 处理使用的此命令 MFC 提供的标准 OLE 链接对话框的实现。 此对话框的实现通过 COleLinksDialog 类访问。 如果当前文件不包含任何链接,则命令将禁用。
不建议使用此命令处理程序的自定义。
之前的 ID_OLE_VERB_FIRST… OLE 谓词的一个 ID 范围
COleDocument 为当前选定的 OLE 项/对象支持的谓词使用此命令 ID 范围。 ,因为给定的 OLE 项/目标类型可以支持零个或更多的自定义谓词,则必须属于范围。 在应用程序的菜单,您应具有 ID_OLE_VERB_FIRSTID 的一个菜单项。 在程序运行,菜单将更新与相应的菜单谓词声明 (或多个谓词的弹出菜单)。 该 OLE 菜单的管理的 AfxOleSetEditMenu处理,执行此命令的更新命令 UI 处理程序。
未处理的每个显式命令处理程序在此范围的命令 ID。 COleDocument::OnCmdMsg 重写使此范围的所有命令 ID,并将它们更改从零开始的谓词数字和生成该谓词的服务器 (使用 COleClientItem::DoVerb)。
建议不要使用自定义项或对该命令 ID 范围的其他使用。
ID_VIEW_TOOLBAR 打开或切换工具栏
CFrameWnd 处理此命令和更新命令 UI 处理程序切换工具栏的可视状态。 工具栏必须是框架的 MDI 子窗口具有子 AFX_IDW_TOOLBAR窗口 ID 的。 命令处理程序实际切换工具栏窗口的可见性。 CFrameWnd::RecalcLayout 用于绘制具有工具栏的框架窗口在新状态。 ,在工具栏可见时,更新命令 UI 处理程序检查菜单项。
不建议使用此命令处理程序的自定义。 如果希望添加其他的工具栏中,您将需要克隆和修改命令处理程序和更新命令 UI 处理程序此命令的。
ID_VIEW_STATUS_BAR 打开或关闭状态栏
此命令在 CFrameWnd 实现与 ID_VIEW_TOOLBAR,除此之外,使用不同的子窗口 ID (AFX_IDW_STATUS_BAR)。
更新命令处理程序
一些标准命令 ID 用作指示符在状态栏。 在应用程序空闲时,这些使用相同的更新命令 UI 处理机制显示其当前的可视状态。 因为它们不能由用户 (即您选择不能驱动器状态栏窗格),然后无法具有这些命令 ID 的一 ON_COMMAND 处理程序。
ID_INDICATOR_CAPS :caps lock 指示符。
ID_INDICATOR_NUM :num lock 指示符。
ID_INDICATOR_SCRL :SCRL lock 指示符。
ID_INDICATOR_KANA :KANA lock 指示符 (仅适用于日语系统)。
所有这三个在 CFrameWnd::OnUpdateKeyIndicator,使用命令 ID 映射到相应的虚拟键的实现帮助器实现。 一个常见实现启用或禁用 (对于禁用状态窗格 = 没有文本) CCmdUI 对象基于相应的虚拟键当前是否正在被锁定。
不建议使用此命令处理程序的自定义。
ID_INDICATOR_EXT : EXT关闭选择的指示符。
ID_INDICATOR_OVR : OVeRSTRIKE 指示符。
ording 指示符的ID_INDICATOR_REC : REC。
目前没有这些指示器的标准实现。
如果选择实现这些指示器,我们在状态栏建议您使用这些指示器 ID 和维护排序指示符 (即按此顺序:EXT,帽,数字, SCRL、 OVR, REC)。