第2节 上下文菜单
上下文菜单就是俗称的右键快捷菜单,当在一个软件当前活动窗口上单击鼠标右键时,或者按键盘上的<属性>键时弹出的菜单。打开本章第1节的“md”绘图软件工程,用于演示上下文的编辑和使用方法。
1)在资源视图中添加一个新的菜单资源,菜单ID是IDR_POPUP,如图14-7所示。

图14-7 编辑上下文菜单资源
2)添加子菜单“POP1”并添加菜单项列表,见表14-2。
表14-2 上下文菜单项属性

3)在CMdView类中,添加WM_RBUTTONDOWN消息映射函数,如图14-8所示。

图14-8 添加WM_RBUTTONDOWN消息映射函数
4)修改消息映射函数代码。

5)编译并运行,测试代码,如图14-9所示。

图14-9 查看运行结果
6)弹出上下文菜单的过程,并注意以下问题。
①CMenu::TrackPopupMenu函数需要代入一个窗口类地址,作为负责管理该菜单项的主要窗口。如果要将菜单项的提示在主框架的状态栏中显示,则必须代入主框架窗口地址。
②CMenu::TrackPopupMenu函数代入的坐标要求是基于屏幕坐标系,而WM_RBUTTONDOWN消息映射函数传入的坐标点是基于客户区坐标系的,因此,需要使用ClientToScreen函数进行转换。
③WM_CONTEXTMENU消息是专门为弹出上下文菜单而设计的,其消息映射函数传入的坐标点基于屏幕坐标系,因此,弹出上下文菜单时更方便。(https://www.daowen.com)
7)在CMdView类中添加WM_CONTEXTMENU消息映射函数,如图14-10所示。

图14-10 添加WM_CONTEXTMENU消息映射函数
8)修改消息映射函数代码,并改用主框架窗口负责管理弹出菜单。


9)编译并运行,测试代码,如图14-11所示。
10)为上下文菜单中的每个菜单项建立一个(COMMAND)消息映射函数,如图14-12所示。

图14-11 查看运行结果

图14-12 添加上下文菜单项的消息映射函数
11)修改以上建立的菜单项消息映射函数的代码。


12)编译并运行,测试代码。选择一个图层,单击鼠标右键,在弹出的快捷菜单中选择相应的命令,将其删除或者置于底层,如图14-13所示。

图14-13 查看运行结果