菜单、工具栏和状态栏是 windows...

55
Windows Windows 编编 编编 —— —— 第3 第 第第 第第第第第第第 第 第第 第第第第第第第 06/08/22 06/08/22 编编编编编编编编 编编编 编编编编编编编编 编编编 编编 编编编编编编编编 编编 编编编编编编编编 Windows Windows 编编编编编编编编编 编编编 。, 编编编编编编编编编 编编编 。, 编编编编编编编编编编编 编编编编编编 编编编编编编编 编编编 ,一 编编编编编编编编编编编 编编编编编编 编编编编编编编 编编编 ,一 编编编编 编编编编编编编编编编编编编编编编编编编编 1 1 编编编 )。 编编编 )。 2 2 编编编编 )。 编编编编 )。 3 3 编编编编 )。 编编编编 )。

Upload: illiana-bentley

Post on 30-Dec-2015

182 views

Category:

Documents


5 download

DESCRIPTION

菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容: ( 1 )菜单。 ( 2 )工具栏。 ( 3 )状态栏。. 3.1 菜单. 重点介绍: 菜单类型 创建菜单 菜单设计 菜单程序 键盘快捷键. 3.1.1 菜单类型. 菜单是用户与程序交互的一个非常重要的元素,使用菜单方便了用户的操作。 Windows 的菜单分为两种类型: 固定菜单:是固定在菜单栏上的菜单。 快捷菜单:叫上下文菜单,或者叫弹出式菜单、快捷菜单。. 3.1.2 创建菜单. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

菜单、工具栏和状态栏是菜单、工具栏和状态栏是 WindowsWindows 不可或不可或缺的界面元素。其中,菜单和工具栏提供缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一了用户传递命令的界面,状态栏提供了一个输出区域。个输出区域。

本章主要介绍以下内容:本章主要介绍以下内容: (( 11 )菜单。)菜单。 (( 22 )工具栏。)工具栏。 (( 33 )状态栏。)状态栏。

Page 2: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

重点介绍:重点介绍: 菜单类型菜单类型 创建菜单创建菜单 菜单设计菜单设计 菜单程序菜单程序 键盘快捷键键盘快捷键

3.1 3.1 菜单菜单

Page 3: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

菜单是用户与程序交互的一个非常重要的菜单是用户与程序交互的一个非常重要的元素,使用菜单方便了用户的操作。元素,使用菜单方便了用户的操作。

WindowsWindows 的菜单分为两种类型:的菜单分为两种类型: 固定菜单:是固定在菜单栏上的菜单。固定菜单:是固定在菜单栏上的菜单。 快捷菜单:叫上下文菜单,或者叫弹出式快捷菜单:叫上下文菜单,或者叫弹出式

菜单、快捷菜单。菜单、快捷菜单。

3.1.1 3.1.1 菜单类型菜单类型

Page 4: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1. 1. 创建菜单资源创建菜单资源 菜单资源既可以在菜单编辑器中创建,也可以通菜单资源既可以在菜单编辑器中创建,也可以通

过代码在程序中创建。这里介绍过代码在程序中创建。这里介绍 33 种创建菜单的种创建菜单的方法。方法。

(( 11 )从菜单栏的菜单命令创建菜单资源。)从菜单栏的菜单命令创建菜单资源。 (( 22 )通过资源面板的快捷菜单选项创建菜单。)通过资源面板的快捷菜单选项创建菜单。 (( 33 )在程序中通过代码创建菜单资源。)在程序中通过代码创建菜单资源。 通过如下代码,即可创建一个空的菜单资源。通过如下代码,即可创建一个空的菜单资源。 CMenu popup;CMenu popup; popup.CreatePopupMenu();popup.CreatePopupMenu();

3.1.2 3.1.2 创建菜单创建菜单

Page 5: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3.1.2 3.1.2 创建菜单创建菜单 方法是:方法是: (( 11 )双击菜单编辑器中新增菜单的方框,)双击菜单编辑器中新增菜单的方框,

弹出弹出 Menu Item PropertiesMenu Item Properties 对话框(图对话框(图 4-4-44 )。)。

(( 22 )输入菜单的标题。在相应的标题字)输入菜单的标题。在相应的标题字母前母前加“加“ &”&” ,则该字母为菜单的助记符。,则该字母为菜单的助记符。

3.1.2 3.1.2 创建菜单创建菜单

Page 6: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-4 4-4 创建菜单 创建菜单

Page 7: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. 3. 创建菜单项创建菜单项方法是:方法是: (( 11 )在菜单编辑器中单击打开要添加菜单项的)在菜单编辑器中单击打开要添加菜单项的

菜单,或者选中某个已有菜单后按菜单,或者选中某个已有菜单后按 InsertInsert 键,双键,双击新增菜单项的方框,弹出击新增菜单项的方框,弹出 Menu Item PropertiMenu Item Propertieses 对话框(图对话框(图 4-54-5 )。)。

(( 22 )选择或输入菜单项的)选择或输入菜单项的 IDID ,输入菜单项的标,输入菜单项的标题。在相应的标题字母前加“题。在相应的标题字母前加“ &”&” ,则该字母为,则该字母为菜单项的助记符。菜单项的助记符。

(( 33 )根据需要选择对话框中的复选框,以便决)根据需要选择对话框中的复选框,以便决定菜单项的各个属性。定菜单项的各个属性。

Page 8: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-5 Menu Item Properties4-5 Menu Item Properties 对话框 对话框

Page 9: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. 3. 创建快捷菜方法如下:创建快捷菜方法如下:(( 11 )新建一个菜单资源。)新建一个菜单资源。

(( 22 )在该菜单资源创建一个菜单。)在该菜单资源创建一个菜单。(( 33 )为菜单创建菜单项。)为菜单创建菜单项。

(( 44 )保存菜单资源。)保存菜单资源。(( 55 )在源代码文件添加如下代码:)在源代码文件添加如下代码:

Menu myMenu;Menu myMenu;VERIFY(myMenu.loadMenu(IDR_MENU1));VERIFY(myMenu.loadMenu(IDR_MENU1));(Menu* pPopup=myMenu.GetSubMenu(0));(Menu* pPopup=myMenu.GetSubMenu(0));

ASSERT(pPopup!=NULL);ASSERT(pPopup!=NULL);pPopup->TrackPopupMenu(TPM_LEFTALIGN||pPopup->TrackPopupMenu(TPM_LEFTALIGN||TPM_RIGHTBUTTON, x, y, AfxGetMainWnd());TPM_RIGHTBUTTON, x, y, AfxGetMainWnd());

Page 10: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1.1. 往菜单系统菜单添加菜单项往菜单系统菜单添加菜单项 2. 2. 创建相应的快捷菜单:创建相应的快捷菜单: 首先创建一个新的菜单资源,然后在该菜 首先创建一个新的菜单资源,然后在该菜

单资源中添加菜单项。 单资源中添加菜单项。

3.1.3 3.1.3 菜单设计菜单设计

Page 11: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1. 1. 菜单的消息映射菜单的消息映射 定义好菜单资源后,就可以对每一个菜单定义好菜单资源后,就可以对每一个菜单

项进行消息映射。项进行消息映射。 在在 MFCMFC 应用程序中使用起来却是很简单。应用程序中使用起来却是很简单。

所有的消息都通过消息响应表映射到响应所有的消息都通过消息响应表映射到响应函数,编程人员所要做的主要工作是在添函数,编程人员所要做的主要工作是在添加映射项后,完成消息的处理函数。加映射项后,完成消息的处理函数。

3.1.4 3.1.4 菜单程序菜单程序

Page 12: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

2. 2. 菜单的相关操作包括:菜单的相关操作包括: (( 11 )创建菜单)创建菜单 (( 22 )装入菜单。)装入菜单。 (( 33 )菜单的初始化。)菜单的初始化。 (( 44 )添加菜单项。)添加菜单项。 (( 55 )修改菜单项。)修改菜单项。 (( 66 )删除菜单项。)删除菜单项。 (( 77 )获取菜单项。)获取菜单项。

Page 13: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. 3. 添加单击菜单项的处理函数添加单击菜单项的处理函数利用利用 3.1.33.1.3 小节建立好的菜单项,映射它们的单击处理函小节建立好的菜单项,映射它们的单击处理函数。数。

(( 11 )打开“)打开“ menu”menu” 工程。工程。 (( 22 )点击“查看”)点击“查看” ->“->“ 建立类向导”,弹出如图建立类向导”,弹出如图 4-94-9

所示的对话框,在所示的对话框,在 CMenuViewCMenuView 类映射“新菜单”下三个类映射“新菜单”下三个子菜单的子菜单的 COMMANDCOMMAND 消息消息

(( 33 )修改上一步骤映射的消息处理函数,如书本程序代)修改上一步骤映射的消息处理函数,如书本程序代码码 3.13.1 所示。所示。

(( 44 )编译运行应用程序。点击“新菜单”)编译运行应用程序。点击“新菜单” ->“->“ 新菜单新菜单2”->“2”->“ 新菜单新菜单 2-2”2-2” ,会弹出消息对话框提示选择了该,会弹出消息对话框提示选择了该菜单项,如图菜单项,如图 4-104-10 所示。所示。

Page 14: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-9 4-9 映射映射 COMMANDCOMMAND消息消息 图图 4-10 4-10 程序运行效程序运行效

果果

Page 15: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. 3. 快捷菜单的编程快捷菜单的编程 快捷菜单是一种浮动的弹出式菜单,它是一种新快捷菜单是一种浮动的弹出式菜单,它是一种新

的用户界面设计风格。当用户按下鼠标右键时,的用户界面设计风格。当用户按下鼠标右键时,就会相应地弹出一个快捷菜单,其中提供了几个就会相应地弹出一个快捷菜单,其中提供了几个与当前选择内容相关的选项。与当前选择内容相关的选项。

创建快捷菜单需要用到创建快捷菜单需要用到 CMenuCMenu 类的类的 TrackPopupTrackPopupMenu()Menu() 函数来设置和显示快捷菜单,其原型如下:函数来设置和显示快捷菜单,其原型如下:

BOOL TrackPopupMenu( UINT nFlags, int x, int BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );y, CWnd* pWnd, LPCRECT lpRect = NULL );

其中,其中, nFlagsnFlags 为快捷菜单坐标设定方式和鼠标操为快捷菜单坐标设定方式和鼠标操作方式。作方式。

Page 16: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

快捷菜单的制作方式有两种快捷菜单的制作方式有两种 :: (( 11 )用)用 CreatePopupMenu()CreatePopupMenu() 建立一个建立一个

空快捷菜单,再使用空快捷菜单,再使用 AppendMenu()AppendMenu() 或或 InInsertMenu()sertMenu() 函数增加所需的菜单项。函数增加所需的菜单项。

(( 22 )从菜单资源中获得一子菜单作为快)从菜单资源中获得一子菜单作为快捷菜单。捷菜单。

Page 17: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1. 1. 键盘快捷键编辑器键盘快捷键编辑器 2. 2. 为“为“ Menu”Menu” 工程的新菜单项添加工程的新菜单项添加

键盘快捷键键盘快捷键

3.1.5 3.1.5 键盘快捷键键盘快捷键

Page 18: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1. 1. 键盘快捷键编辑器键盘快捷键编辑器 打开键盘快捷键编辑器(图打开键盘快捷键编辑器(图 4-134-13 )后,可)后,可

以通过选中一项键盘快捷键后按以通过选中一项键盘快捷键后按 InsertInsert 键键添加一个键盘快捷键新项。添加一个键盘快捷键新项。

接着,双击键盘快捷键新项,会弹出接着,双击键盘快捷键新项,会弹出 Accel Accel PropertiesProperties 对话框(图对话框(图 4-144-14 )。在该对话)。在该对话框中,可以设置具体的键盘快捷键框中,可以设置具体的键盘快捷键 IDID 与具与具体的键盘快捷键。体的键盘快捷键。

Page 19: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-13 4-13 键盘快捷键编辑器键盘快捷键编辑器

Page 20: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

2. 2. 为“为“ Menu”Menu” 工程的新菜单项添加工程的新菜单项添加键盘快捷键步骤如下:键盘快捷键步骤如下:

(( 11 )打开“)打开“ Menu”Menu” 工程。工程。 (( 22 )选择要定义键盘快捷键的新菜单项,按)选择要定义键盘快捷键的新菜单项,按 AltAlt++ EnterEnter组合键。系统弹出组合键。系统弹出 Menu Item PropertiesMenu Item Properties对话框。对话框。

(( 33 )在标题文本框中将键盘快捷键添加到菜单项)在标题文本框中将键盘快捷键添加到菜单项标题的后面。其中,菜单项标题的后面。其中,菜单项 ID_NEW1ID_NEW1 的键盘快捷的键盘快捷键是键是 CtrlCtrl ++ AA ,菜单项,菜单项 ID_NEW2-1ID_NEW2-1 的键盘快捷键的键盘快捷键是是 CtrlCtrl ++ BB,, ID_NEW2-2ID_NEW2-2 的键盘快捷键是的键盘快捷键是 CtrlCtrl ++CC 。在菜单标题后输入转移符“。在菜单标题后输入转移符“ \t”\t” ,可以让所有,可以让所有键盘快捷键都按左对齐的方式显示,如图键盘快捷键都按左对齐的方式显示,如图 4-154-15 所示。所示。

Page 21: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-16 4-16 建立键盘快捷键 建立键盘快捷键

Page 22: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 44 )在键盘快捷键编辑器中建立相)在键盘快捷键编辑器中建立相应的快捷键表条目。双击键盘快捷键应的快捷键表条目。双击键盘快捷键编辑器的空白行,在弹出的“编辑器的空白行,在弹出的“ Accel PAccel Properties”roperties” 对话框中的对话框中的 IDID 选择新菜选择新菜单项的单项的 IDID ,在快捷键中则设置与该菜,在快捷键中则设置与该菜单项相应的键盘快捷键。单项相应的键盘快捷键。

(( 55 )编译运行应用程序,按快捷键)编译运行应用程序,按快捷键就可执行相应的菜单操作。就可执行相应的菜单操作。

Page 23: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3.2.1 3.2.1 工具栏编辑器工具栏编辑器 3.2.2 3.2.2 工具栏操作的相关函数工具栏操作的相关函数 3.2.3 3.2.3 工具栏程序工具栏程序

3.2 3.2 工具栏工具栏

Page 24: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3.2.1 3.2.1 工具栏编辑器工具栏编辑器 1. 1. 创建一个新的工具栏资源创建一个新的工具栏资源 2. 2. 创建一个新的工具栏按钮创建一个新的工具栏按钮 3. 3. 移动一个按钮移动一个按钮 3. 3. 删除一个按钮删除一个按钮 5. 5. 在工具栏中插入间隔在工具栏中插入间隔 6. 6. 工具栏按钮属性的设置工具栏按钮属性的设置

Page 25: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

介绍与工具栏操作相关的函数介绍与工具栏操作相关的函数 :: 1. Create()1. Create() 2. LoadToolBar()2. LoadToolBar() 3. LoadBitmap()3. LoadBitmap() 3. SetBitmap()3. SetBitmap() 5. GetItemID()5. GetItemID() 6. EnableDocking()6. EnableDocking()

3.2.2 3.2.2 工具栏操作的相关函数工具栏操作的相关函数

Page 26: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

1. Create()1. Create() Create()Create() 函数用于建立函数用于建立 WindowsWindows 工具栏,工具栏,并且把它连接到工具栏对象上。并且把它连接到工具栏对象上。 Create()Create()函数的原型为:函数的原型为:

BOOL Create( CWnd* pParentWnd, DWOBOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CRD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBABRS_TOP, UINT nID = AFX_IDW_TOOLBARR ); );

函数创建成功则返回函数创建成功则返回 11 ,否则返回,否则返回 00 。。

Page 27: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

2. LoadToolBar()2. LoadToolBar() 函数函数 LoadToolBar()LoadToolBar() 用于加载已有的工具用于加载已有的工具

栏资源,其函数原型如下:栏资源,其函数原型如下: BOOL LoadToolBar( LPCTSTR lpszResouBOOL LoadToolBar( LPCTSTR lpszResou

rceName );rceName ); BOOL LoadToolBar( UINT nIDResource );BOOL LoadToolBar( UINT nIDResource );

Page 28: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. LoadBitmap()3. LoadBitmap() LoadBitmap()LoadBitmap() 函数用于装入工具栏按钮的函数用于装入工具栏按钮的位图资源,该位图做为显示在按钮上方的位图资源,该位图做为显示在按钮上方的图形,其函数原型如下:图形,其函数原型如下:

BOOL LoadBitmap( LPCTSTR lpszResourBOOL LoadBitmap( LPCTSTR lpszResourceName );ceName );

BOOL LoadBitmap( UINT nIDResource );BOOL LoadBitmap( UINT nIDResource );

Page 29: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3. SetBitmap()3. SetBitmap() SetBitmap()SetBitmap() 函数用于指定工具栏按钮的位函数用于指定工具栏按钮的位

图资源,其函数原型如下:图资源,其函数原型如下: BOOL SetBitmap( HBITMAP hbmImageWBOOL SetBitmap( HBITMAP hbmImageW

ell );ell ); 其中,参数其中,参数 hbmImageWellhbmImageWell是位图资源句是位图资源句柄。柄。

Page 30: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

5. GetItemID()5. GetItemID() 函数函数 GetItemID()GetItemID() 用于以按钮的索引编号来用于以按钮的索引编号来

查找其命令查找其命令 IDID值,其函数原型如下:值,其函数原型如下: UINT GetItemID( int nIndex ) const;UINT GetItemID( int nIndex ) const; 其中,参数其中,参数 nIndexnIndex 工具栏按钮的索引编号。工具栏按钮的索引编号。

Page 31: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

6. EnableDocking()6. EnableDocking() 函数函数 EnableDocking()EnableDocking() 是是 CControlBarCControlBar 类类

的成员函数,用于设置工具栏的浮动性,的成员函数,用于设置工具栏的浮动性,其函数原型为:其函数原型为:

void EnableDocking( DWORD dwStyle );void EnableDocking( DWORD dwStyle ); 其中,参数其中,参数 dwStyledwStyle 是工具栏浮动的位置 是工具栏浮动的位置

Page 32: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

本小节创建一个简单的能够画直线、圆和本小节创建一个简单的能够画直线、圆和矩形的程序,通过切换工具栏按钮能够改矩形的程序,通过切换工具栏按钮能够改变要画的图形。变要画的图形。

程序的创建步骤如下:程序的创建步骤如下:

3.2.3 3.2.3 工具栏程序工具栏程序

Page 33: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 11 )点击“文件”)点击“文件” ->“->“ 新建”,弹出新新建”,弹出新建对话框。切换到工程标签页,在对话框建对话框。切换到工程标签页,在对话框左侧选择“左侧选择“ MFC AppWizardMFC AppWizard (( exeexe )”工)”工程,在对话框右侧输入工程的名字,如程,在对话框右侧输入工程的名字,如 tootoolbarlbar 。输入或者选择工程保存的位置。单。输入或者选择工程保存的位置。单击“确定”按钮新建一个应用程序工程,击“确定”按钮新建一个应用程序工程,如图如图 4-224-22 所示。所示。

(( 22 )在弹出的“)在弹出的“ MFC AppWizardMFC AppWizard -- SteStep 1”p 1” 对话框中,为简单起见,选择单文档对话框中,为简单起见,选择单文档的应用程序类型,如图的应用程序类型,如图 4-234-23 所示。所示。

Page 34: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-22 4-22 新建应用程序工新建应用程序工程 程

图图 4-23 4-23 选择单文档应用选择单文档应用程序类型程序类型

Page 35: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 33 )创建工具栏资源。打开资源面板,)创建工具栏资源。打开资源面板,右键单击“右键单击“ Toolbar”Toolbar” 文件夹,在快捷菜文件夹,在快捷菜单中选择“单中选择“ Insert Toolbar”Insert Toolbar” 菜单项,创菜单项,创建一个新的工具栏资源,建一个新的工具栏资源, IDID 为为 IDR_TOOLIDR_TOOLBAR1BAR1 。在工具栏编辑器中添加。在工具栏编辑器中添加 33 个工具栏个工具栏按钮,按钮的按钮,按钮的 IDID号分别为号分别为 ID_LINEID_LINE、、 ID_ID_RECTANGELRECTANGEL 与与 ID_ELLIPSEID_ELLIPSE,添加后工具,添加后工具栏资源如图栏资源如图 4-244-24 所示。所示。

Page 36: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-24 4-24 工具栏资源工具栏资源

Page 37: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 44 )在应用程序中加载工具栏资源。在)在应用程序中加载工具栏资源。在 CMainCMainFrameFrame 类中添加一个管理工具栏的对象类中添加一个管理工具栏的对象 m_wndDm_wndDrawToolBarrawToolBar ,也就是在,也就是在 CMainFrameCMainFrame 类的定义类的定义代码中添加如下代码:代码中添加如下代码:

protected: // control bar embedded membersprotected: // control bar embedded members CToolBar m_wndDrawToolBar;CToolBar m_wndDrawToolBar; 接着,在接着,在 CMainFrame CMainFrame 类的类的 OnCreate()OnCreate() 函数中函数中

添加装载工具栏的代码添加装载工具栏的代码 .. 如课本程序代码如课本程序代码 3.4 3.4

Page 38: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 55 )在)在 CToolbarViewCToolbarView 类中手动添加变量,代码类中手动添加变量,代码如下:如下:

public:public: CPoint m_point1, m_point2;//CPoint m_point1, m_point2;//记录鼠标按记录鼠标按

下和松开的点下和松开的点 bool m_bLButtonDown;//bool m_bLButtonDown;//标识鼠标是否被标识鼠标是否被

按下按下 enum {DRAW_LINE, DRAW_RECTANGEL, Denum {DRAW_LINE, DRAW_RECTANGEL, DRAW_ELLIPSE} m_flag;//RAW_ELLIPSE} m_flag;//标识画的图形类型标识画的图形类型

接着,在接着,在 CToolbarViewCToolbarView 类的构造函数中初始化这类的构造函数中初始化这些变量,如课本程序代码些变量,如课本程序代码 3.53.5 所示。所示。

Page 39: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 66 )点击“查看”)点击“查看” ->“->“ 建立类向导”,建立类向导”,在“在“ MFC ClassWizard”MFC ClassWizard” 对话框中在对话框中在 CToCToolBarViewolBarView 类映射新创建的类映射新创建的 33 个工具栏按个工具栏按钮的命令处理消息和界面更新处理消息。钮的命令处理消息和界面更新处理消息。图图 4-254-25 为映射为映射 ID_LINEID_LINE工具栏按钮的命令工具栏按钮的命令处理消息。处理消息。

修改消息的处理函数,如课本程序代码修改消息的处理函数,如课本程序代码 3.63.6所示。所示。

Page 40: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-25 4-25 映射工具栏按钮的消息 映射工具栏按钮的消息

Page 41: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 77 )点击“查看”)点击“查看” ->“->“ 建立类向导”,建立类向导”,在“在“ MFC ClassWizard”MFC ClassWizard” 对话框中在对话框中在 CToCToolBarViewolBarView 映射鼠标按下、鼠标松开和鼠映射鼠标按下、鼠标松开和鼠标移动消息的处理。如图标移动消息的处理。如图 4-264-26 为映射为映射 WMWM_LBUTTONDOWN_LBUTTONDOWN 消息。消息。

修改鼠标消息的处理函数,如课本程序代修改鼠标消息的处理函数,如课本程序代码码 3.73.7 所示。所示。

Page 42: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-26 4-26 映射鼠标消息映射鼠标消息

Page 43: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 88)修改)修改 CToolbarViewCToolbarView 类的类的 OnDraw()OnDraw()函数,函数,

(( 99 )编译运行应用程序,在程序中画一)编译运行应用程序,在程序中画一个椭圆的效果如图个椭圆的效果如图 4-274-27 所示。所示。

Page 44: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-27 4-27 程序的运行效果程序的运行效果

Page 45: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

3.3.1 3.3.1 创建状态栏创建状态栏 3.3.2 3.3.2 状态栏操作的相关函数状态栏操作的相关函数 3.3.3 3.3.3 状态栏程序状态栏程序

3.3 3.3 状态栏状态栏

Page 46: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

本程序在状态栏中显示系统的时间,程序实现的本程序在状态栏中显示系统的时间,程序实现的步骤如下:步骤如下:

(( 11 )点击“文件”)点击“文件” ->“->“ 新建”,弹出新建对话新建”,弹出新建对话框。切换到工程标签页,在对话框左侧选择“框。切换到工程标签页,在对话框左侧选择“ MFMFC AppWizardC AppWizard (( exeexe )”工程,在对话框右侧输)”工程,在对话框右侧输入工程的名字,如入工程的名字,如 statusstatus 。输入或者选择工程保。输入或者选择工程保存的位置。单击“确定”按钮新建一个应用程序存的位置。单击“确定”按钮新建一个应用程序工程,如图工程,如图 4-284-28所示。所示。

(( 22 )在弹出的“)在弹出的“ MFC AppWizardMFC AppWizard-- Step 1”Step 1”对话框中,为简单起见,选择单文档的应用程序对话框中,为简单起见,选择单文档的应用程序类型,如图类型,如图 4-294-29 所示。所示。

Page 47: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

图图 4-28 4-28 新建应用程序工程 新建应用程序工程

Page 48: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 33 )在文件“)在文件“ MainFrm.cpp”MainFrm.cpp” 中往中往 indiindicatorscators 数组添加一个用于显示系统时间的数组添加一个用于显示系统时间的显示面板,如程序代码显示面板,如程序代码 3.93.9 所示。所示。

图图 4-29 4-29 选择单文档应用程序类型选择单文档应用程序类型

Page 49: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 44 )在)在 CMainFrameCMainFrame 类中添加一个用于类中添加一个用于记录时钟事件记录时钟事件 IDID号的变量,代码如下:号的变量,代码如下:

protected: // control bar embedded meprotected: // control bar embedded membersmbers

UINT m_timer;UINT m_timer; 接着,在接着,在 CMainFrameCMainFrame 类的类的 OnCreate()OnCreate()

函数中创建状态栏,设置时钟面板信息,函数中创建状态栏,设置时钟面板信息,设置时钟, 设置时钟,

Page 50: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 55 )点击“查看”)点击“查看” ->“->“ 建立类向导”,在“建立类向导”,在“ MMFC ClassWizard”FC ClassWizard” 对话框中,在对话框中,在 CMainFrameCMainFrame 类类映射时钟消息,如图映射时钟消息,如图 4-304-30 所示。所示。

图图 4-30 4-30 映射时钟消息映射时钟消息

Page 51: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

(( 66 )编译运行应用程序,效果如图)编译运行应用程序,效果如图 4-314-31所示。所示。

图图 4-31 4-31 在状态栏显示时间在状态栏显示时间

Page 52: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

本章详细介绍了菜单、工具栏和状态栏的本章详细介绍了菜单、工具栏和状态栏的创建与使用。通过本章的学习,读者应掌创建与使用。通过本章的学习,读者应掌握以下内容:握以下内容:

(( 11 )能够创建固定菜单和快捷菜单,并)能够创建固定菜单和快捷菜单,并能处理相应的消息。能处理相应的消息。

(( 22 )能够创建工具栏和工具栏按钮,并)能够创建工具栏和工具栏按钮,并能处理相应的消息。能处理相应的消息。

(( 33 )能够往状态栏中添加显示面板,并)能够往状态栏中添加显示面板,并控制显示面板的显示。控制显示面板的显示。

小结小结

Page 53: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

一、选择题一、选择题 1. 1. 菜单选择会发送( )消息。菜单选择会发送( )消息。A. COMMANDA. COMMAND B. COMMAND_UPDATE_UIB. COMMAND_UPDATE_UIC. WM_KEYUPC. WM_KEYUP D. WM_KEYDOWND. WM_KEYDOWN 2. 2. 要使工具栏可以浮动,需要调用的函数是( )要使工具栏可以浮动,需要调用的函数是( ) A. CControlBar::EnableDockingA. CControlBar::EnableDocking B.CToolbar::SetButtonInfoB.CToolbar::SetButtonInfo C.CFrameWnd::DockControlBarC.CFrameWnd::DockControlBar D.CToolbar::SetButtonStyleD.CToolbar::SetButtonStyle 3. 3. 调用调用 CStatusBar::CreateCStatusBar::Create 函数可以让工具栏放置在函数可以让工具栏放置在

窗口的( )。窗口的( )。A. A. 顶部顶部 B. B. 底部底部 C. C. 左侧左侧 D. D. 右侧右侧

练习四练习四

Page 54: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

二、填空题二、填空题 1. 1. 菜单分为菜单分为 和和 两种类型。两种类型。 2. 2. 用用 编辑工具栏资源。编辑工具栏资源。 3. 3. 定义状态栏指示区字符串资源定义状态栏指示区字符串资源 IDID 的数的数

组是组是 。。

Page 55: 菜单、工具栏和状态栏是 Windows 不可或缺的界面元素。其中,菜单和工具栏提供了用户传递命令的界面,状态栏提供了一个输出区域。 本章主要介绍以下内容:

《 《 WindowsWindows 编程编程》——》——第第 33 章 菜单、工具栏和状态栏章 菜单、工具栏和状态栏

04/19/2304/19/23民政学院软件学院 蒋国清民政学院软件学院 蒋国清

三、问答题三、问答题 1. 1. 如何生成一个菜单?如何生成一个菜单? 2. 2. 如何使工具栏按钮与触发同一个函数的如何使工具栏按钮与触发同一个函数的

菜单项相关联?菜单项相关联? 3. 3. 什么是状态栏?什么是状态栏?