首页 理论教育VC++MFC视频教程:上下文菜单的添加与运行

VC++MFC视频教程:上下文菜单的添加与运行

【摘要】:上下文菜单就是俗称的右键快捷菜单,当在一个软件当前活动窗口上单击鼠标右键时,或者按键盘上的<属性>键时弹出的菜单。表14-2 上下文菜单项属性3)在CMdView类中,添加WM_RBUTTONDOWN消息映射函数,如图14-8所示。图14-9 查看运行结果6)弹出上下文菜单的过程,并注意以下问题。③WM_CONTEXTMENU消息是专门为弹出上下文菜单而设计的,其消息映射函数传入的坐标点基于屏幕坐标系,因此,弹出上下文菜单时更方便。

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

1)在资源视图中添加一个新的菜单资源,菜单ID是IDR_POPUP,如图14-7所示。

978-7-111-46378-8-Chapter14-9.jpg

图14-7 编辑上下文菜单资源

2)添加子菜单“POP1”并添加菜单项列表,见表14-2。

表14-2 上下文菜单项属性

978-7-111-46378-8-Chapter14-10.jpg

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

978-7-111-46378-8-Chapter14-11.jpg

图14-8 添加WM_RBUTTONDOWN消息映射函数

4)修改消息映射函数代码。

978-7-111-46378-8-Chapter14-12.jpg

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

978-7-111-46378-8-Chapter14-13.jpg

图14-9 查看运行结果

6)弹出上下文菜单的过程,并注意以下问题。

①CMenu::TrackPopupMenu函数需要代入一个窗口类地址,作为负责管理该菜单项的主要窗口。如果要将菜单项的提示在主框架状态栏中显示,则必须代入主框架窗口地址。

②CMenu::TrackPopupMenu函数代入的坐标要求是基于屏幕坐标系,而WM_RBUTTONDOWN消息映射函数传入的坐标点是基于客户区坐标系的,因此,需要使用ClientToScreen函数进行转换。

③WM_CONTEXTMENU消息是专门为弹出上下文菜单而设计的,其消息映射函数传入的坐标点基于屏幕坐标系,因此,弹出上下文菜单时更方便。(www.chuimin.cn)

7)在CMdView类中添加WM_CONTEXTMENU消息映射函数,如图14-10所示。

978-7-111-46378-8-Chapter14-14.jpg

图14-10 添加WM_CONTEXTMENU消息映射函数

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

978-7-111-46378-8-Chapter14-15.jpg

978-7-111-46378-8-Chapter14-16.jpg

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

10)为上下文菜单中的每个菜单项建立一个(COMMAND)消息映射函数,如图14-12所示。

978-7-111-46378-8-Chapter14-17.jpg

图14-11 查看运行结果

978-7-111-46378-8-Chapter14-18.jpg

图14-12 添加上下文菜单项的消息映射函数

11)修改以上建立的菜单项消息映射函数的代码。

978-7-111-46378-8-Chapter14-19.jpg

978-7-111-46378-8-Chapter14-20.jpg

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

978-7-111-46378-8-Chapter14-21.jpg

图14-13 查看运行结果