当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 >  第5章 资源在Windows编程中的应用 >  5-1(例1) >  5-1(例1)

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表

5-1(例1)在线视频

5-1(例1)

下一节:5-2

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表

5-1(例1)课程教案、知识点、字幕

下面我们通过一个例子来介绍

创建菜单资源

我们这个例子是这样的

创建一个窗口菜单的构架

然后单击

创建统计计算菜单项

动态地创建一个统计计算菜单

那么大家看一下,这个时候菜单里面

窗口里面菜单只有文件和帮助

并没有统计计算菜单项

那么我们创建了

创建后,大家注意到

创建统计计算菜单项这个时候变灰了

就是不能够再创建了

但是,你可以删除

删除完以后又没了

删除完以后删除又变灰了

创建又可以了 我们再创建

那么这个创建完了

统计计算菜单项里面有求和、方差、平均值、均方根

那么我们现在通过一个实例给大家介绍我们这个菜单怎么创建

当然我们菜单里面的求和、方差、平均值、均方根的计算还不能做,因为这牵涉到别的知识

我们先学会创建菜单

好,我们下面新建一个文件

我们的例子叫5_1

我们创建的是空的项目

为什么创建空的

我们从头开始学习代码

好的,确定

确定后这个时候

我们要增加源程序

我们添加一个源程序,新建项里面一个CPP文件

我们把它改为5_1

这个时候出现一个空的框

5_1.cpp这个空文件框产生了

然后我们要把代码录入进去

我们现在完成了代码的录入

这个时候我把关键的地方解释一下

在这里我主要介绍不一样的地方

跟前面不一样的地方就是这里有一个加载加速键资源

然后这里有一个TranslateAccelerator,原来只有这两行

这里多了一个加速键,这个方面的问题

再就是在WinMain里面多了地方

多的地方,这个就是应用程序的Title,这个没啥问题

这个大家都容易识别

这就是应用程序的Title:My_Menu_Example

其他的地方都是缺省的

然后重点讲一下这个消息处理函数

消息处理函数里面我们现在如果只写了一个CPP

这个程序是不能运行的

因为大家看到这个程序里面有:比如说菜单的ID、求和、方差、平均值、均方根

它都打上了波浪线,说明这些都没有定义

而这些定义在什么地方?

比如说,IDM_ADDMENU这个都没定义

那么这个定义是什么?

ADDMENU的ID就是这个菜单的ID

然后这个DELMENU的ID是哪一个ID

是这个删除统计计算菜单项的ID

所以这个实际上也没有定义

这个编译环境好在哪里?好在就是说

没有定义和实例的东西都会给你划出红色波浪线提示

所以这样很容易识别错误所在

那么这些东西在哪里定义

这个ID应该这头文件里面定义

这个“退出”的ID是这个ID

是文件菜单的退出项ID

所以我们现在要定义这些ID

好了,我们的ID这头文件里面定义

我们添加一个头文件

我们选一个头文件,然后我们头文件也叫5_1

因为既然例题的名字叫做5_1

我们都写成5_1,这样好识别

好,5_1里面,我们现在把这个头文件内容编写上

我们现在把头文件编写好了

头文件编写好了,大家看这里面

这个ADDMENU就是这个创建统计计算菜单项的ID

这个DELMENU就是这个删除统计计算菜单项的ID

然后退出就是这个ID

HELP是这个帮助的ID

然后,由于我们创建了这个统计计算菜单项

下面的求和、方差、平均值、均方根

所以这里有求和、方差、平均值、均方根

那么这几个ID都在这里定义了

那么这个时候我们在回过头来看

这里红色波浪线都没有了

那么说明我们已经把ID建好了

ID建好了,如果这个时候编译运行

这个时候能不能运行 我们试一下

好,试了成功了

我们运行一下看看

没有菜单,大家看到了没有菜单

说明什么?虽然我们定义了菜单和菜单项

虽然我们这里,在这里通过ADDMENU

对这个ADDMENU进行响应的时候

我们在窗口中获得了MENU的句柄

然后动态地创建一个菜单

为什么动态创建?因为大家看到这几个是动态地创建上去的

然后怎么动态地创建上去?是一个一个追加上去的

先把求和放上去AppendMenu,然后把方差放上去

平均值放上去,均方根放上去

然后加载完后插入,插入哪

插入到原来菜单的后面

我们先把这个删除

那么这个时候动态地创建完了

我是把包含有求和、方差、平方值、均方根的统计计算菜单插入文件、帮助的后面

所以我们有InsertMenu

然后插入完了的时候这个加入菜单项变灰了

这个时候这个地方就变灰了

这个删除菜单统计计算菜单项变实了,可以操作了

所以DELMENU变成了ENABLE了

那么DrawMenuBar重新在窗口中画图

那么这个时候大家看到了

我们刚才编译完了运行程序,根本就没有

是吧,什么原因?

是因为我们没有加载菜单资源

只是在系统内部创建,没有加载

所以我要添加一个菜单资源

所以大家这个地方要注意

我加的资源,资源,是加一个资源文件

资源文件,我也取个名字叫做5_1

刚才说了,这个资源文件可以自己取,我们也取成5_1

那么注意这个资源文件

我要进行编写,编写,我就打开方式

我用C++源代码编辑器去编辑

好了,现在系统已经给你生成了一些东西

我们现在作为初学不要去理会它

这个时候完全是一个干净的空文件

这个时候我的资源文件已经写成了

那么资源文件里面由于遇到了大量的这些ID

这些ID在哪里定义的?在头文件里面,这个地方定义的

所以的话我们要把这个.h的加载

大家看,如果我把这个注释掉

注释掉以后这些ID就不可用了,所以这个地方不能注释掉

然后我们资源文件里创建了一个菜单,名字叫MENU

大家请注意这个MENU和这个MENU虽然是一样的

这个MENU是关键字,说明创建的是菜单

而这个地方只是说明菜单的名字也叫做MENU

然后我们开始BEGIN

BEGIN和END就好像一对括弧一样的

BEGIN里面我创建了一个POPUP弹出式的文件菜单

POPUP菜单里面通过BEGIN和END创建了几个菜单项

几个菜单项是什么?就是

创建统计计算菜单项、删除

好了,那么大家看这里有一个创建统计计算菜单项,这个删除

这个SEPARATOR就是这条横线

然后这是退出,这个退出

好,那么这个是POPUP弹出的

还有一个MENUITEM是帮助

MENUITEM帮助,给它单独放一个地方,不放到BEGIN和END里面

那么这样就创建了文件菜单项

然后,我这里还有一个加速键

加速键是对这两个加速键进行操作

所以大家在这里看到有一个P和一个D

是Ctrl P和Ctrl D来进行加速键的操作

这样资源文件构建完之后,我们再重新生成

这个时候菜单就有了

所以你刚才加载的菜单ID及对菜单ID的响应

只是完成了响应而已

也就是说我们在这个地方,也就是在WndProc函数里面的ADDMENU增加菜单项

增加菜单就是增加统计计算菜单这个操作包括DELMENU以及后面的退出操作

实际上,只是定义了消息响应机制

如果菜单没有加载,消息响应机制是存在的,但是没法通过菜单项的操作来响应消息启动机制

所以并不意味着消息响应机制有了菜单就有了

这是两回事

所以这里ADDMENU已经跟大家介绍过了

那么DELMENU就已经指定了位置了,第二位置,这里的参数是BYPOSITION

第二位置,大家想哪个是第二位置

我们创建完了,这个就是第二,为什么

从这个开始,这个是0

0、1、2我们是这么算的,所以这个是第2

第二是BY_POSITION,然后这个删除之后

我们要把这个变成增加菜单项就变成了和操作

所以这个BY_POSITION删除之后,大家看到这个地方是可操作的

这个地方变成ENABLE了

下面删除菜单项就变成灰了

大家看这个地方灰了,是这么回事

然后DrawMenuBar操作完后把菜单重新绘制一遍

那么退出的话就是SendMessage发送一个DESTROY的消息

那么DESTROY消息是什么

大家知道DESTROY消息是PostQuitMessage

这个大家很熟悉

好了,这个例子已经给大家做了详细的介绍

我们这个例子就介绍到这

VC++面向对象与可视化程序设计(上):Windows编程基础课程列表:

第0章 课前讨论

-讨论实录

--0-0

第1章 Windows应用程序基础

-1-1 Windows应用程序的特点

--1-1

-1-2 可视化编程

--1-2

-1-3 关于API

--1-3-1

--1-3-2

-1-4 Windows应用程序组成及编程步骤

--1-4-1

--1-4-2

-1-5 应用程序举例

--1-5-1

--1-5-2

--1-5-3

第2章 Windows的图形设备接口及Windows绘图

-02-1 Windows图形设备接口

--02-1-1 GDI

--02-1-2 图形刷新

--02-1-3 获得设备环境方法

--02-1-4 映像模式

-02-2 绘图工具与颜色

--02-2-1 画笔

--02-2-2 画刷和颜色

-02-3 常用绘图函数

--02-3 常用绘图函数

-02-4 例题和作业

--02-4-1 例题1

--02-4-2 例题2

--02-4-3 例题3

--02-4-4 例题4

--02-4-5 作业

-第2章源代码

--外部链接

--外部链接

第3章 文本与字体

-3-1 设置文本的设备环境

--3-1 设置文本的设备环境

-3-2 文本的输出过程

--3-2 文本的输出过程

-3-3 例题和作业

--3-3-1 (例3-1)

--3-3-2 (例3-2)

--3-3-3 (例3-3)

--3-3-4 (例3-4)

--3-3-5 (作业)

-第3章源代码

--外部链接

第4章 Windows应用程序中的键盘与鼠标

-4-1 Windows 应用程序中的键盘与鼠标

--4-1

-4-2 键盘的操作应用举例

--4-2

-4-3 例题

--4-3

-4-3 鼠标在应用程序中的应用

--4-3

-4-4 例题4-4

--4-4

-第4章源代码

--外部链接

第5章 资源在Windows编程中的应用

-5-1 菜单和加速键资源及其应用

--5-1

-5-1(例1)

--5-1(例1)

-5-2 位图资源及其应用

--5-2

-5-3 对话框资源及其应用

--5-3-1

--5-3-2

-5-4 图标资源的应用

--5-4

-第5章源代码

--外部链接

-第一次作业

--第一次作业--作业

-第二次作业

--第二次作业--作业

-第三次作业

--第三次作业--作业

5-1(例1)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。