板书:
注意:有同学反应添加控件以后程序编译没报错,但是运行没有反应,请看此贴:《【常见问题】程序编译不报错,为什么点击运行无反应? 》http://www.rupeng.com/forum/thread-601-1-3.html
1、GetOpenFileName
希望同学们不要只记我教的结果,而是要跟着我的思路进行思考,看解决问题的方式。否则就又变成“我教同学们学”的填鸭式教育了。
(2)课上练习:打开对话框,用户选择一个音乐文件,然后用PlaySound播放。
(3)打开多个文件:
增加OFN_ALLOWMULTISELECT选项后测试一下。发现如果选择一个文件后显示的还是这个文件的路径,可是如果选择多个文件显示的就只有目录的路径,怎么回事?
调试一下,看看szFile在内存中的样子。调试的是发现内存中的样子是目录的路径然后加上各个文件名,中间用“/0”分割,现在明白为啥值显示目录的路径了吗?同学们举手回答。
大家明白这一点就可以了,有兴趣的可以课后来做多文件选择的处理。做播放器的时候经常需要这个功能,也就是播放列表。有一篇文章可以参考一下:http://xxkkff.blog.51cto.com/162016/26222。
2、GetSaveFileName
保存文件对话框
只要把上边函数换成GetSaveFileName。OFN本来是OpenFileName的简写,它SaveFileName也跑来凑热闹,吼吼。如果需要保存文件覆盖提示怎么办呢?看看OFN有选项吗?OFN_OVERWRITEPROMPT
3、对话框程序
(1)创建一个对话框程序并运行
(2)先打开dlg文件然后点击主菜单的【工具】→【资源编辑器】,也可以在文件上点右键选择【打开方式】→【ResourceEditor】。
外行看热闹、内行看门道,思考一下第一个打开方式的原理,很多软件都这么搞,支持外接软件
在资源编辑器中编辑对话框界面并且拖放控件上去
(3)什么叫做“对话框程序”,和以前学的“窗口程序”有什么区别吗?
“对话框程序”是一种特殊的“窗口程序”,与“窗口程序”比起来学习难度比较小,最重要的是可以使用可视化的对话框编辑器。对话框程序能够完成大部分功能,但是有小部分功能还是要用“窗口程序”,对话框程序能完成的功能是“窗口程序”的一个子集,学习“对话框程序”中的知识点可以完全应用到“窗口程序”上去。让大家快乐学习,快速做出东西,所以咱们先学习“对话框程序”的开发。
(4)常用控件介绍。RichEdit、UDC控件要是使用的话要加代码,后面会讲。
4、嵌入式资源
(1)资源的概念。
word里边插入图片有:嵌入和链接两种方式。
web里边是连接方式。<img src="http://www.jsj321.com/log.gif"/>
为什么要有资源。把图片和EXE文件放到一起,一个文件夹底下。我更喜欢的方式,只要一个EXE文件,你把用到的所有图片、歌曲音乐、动画EXE里边去。这些东西就是资源。资源和代码区分开。EXE文件两部分:代码和资源。
(2)惯例:所有资源的名字都是ID开头,并且大写,ID后边一般跟着一个资源类型的大写字母,对话框D、Bmp图片B、图标I。接着是下划线,最后是真正的名称。
5、对话框中图片、动画资源的应用(1)BitMap:在资源中加入BITMAP类型的资源,然后拖一个IMAGE控件过来,并且修改IMAGE控件的Type属性为BitMap,并且给资源一个名字(一般以IDB_开头,并且大写,这是规范,不是必须)并且在控件的Image属性中选择刚才添加的BITMAP资源。虽然可以直接选择,但是还是建议直接把图片拷贝到工程目录下,因为。。。jpg的格式怎么转换为bmp格式的呢?用画图工具(mspaint)。(2)动画:在资源中加入AVI类型的资源,然后拖一个Animation控件过来,在AVIClip属性中选择刚才添加的AVI资源,并且给资源一个名字(一般以IDV_开头,并且大写,这是规范,不是必须)。如果需要自动播放,则修改AutoPlay属性为True。AVI动画资源非常少,但是GIF动画非常多,可以用工具将GIF转换为AVI格式。注意很多电影的格式也是AVI后缀,但是那并不是咱们这里说的AVI动画。AVI格式是一个大杂烩。GIF转AVI的工具:http://www.onlinedown.net/soft/7689.htm
注意:有同学反应“程序加入动画控件以后程序就运行不起来了,可以构建,但是点击运行却没反应”,请参考下面的文章:
程序编译没错,但运行无反应?
http://www.rupeng.com/forum/thread-601-1-3.html
这个软件有一个Bug,使用的时候必须在c盘下创建一个名字为“aa”的文件夹
课下作业:自己发挥,比如给女友做一个贺卡(下节课讲教大家怎么加音乐,当然是用PlaySound函数)
6、菜单资源
制作好菜单资源后,在对话框的Menu属性中选择刚才制作好的对话框。
7、只有控件、菜单,可以点击控件、菜单以后的动作怎么做呢?就要写代码了。
同学提问:
(1)BMP的图片不是很大吗,这么插入资源会不会使得最后编译的程序体积很大
答:对,确实会使得文件比较大,但是一般软件里嵌入的图片都是起到装饰作用,所以东西不会太多。而且你生成的EXE文件还可以压缩。
(2)IDB_TEST1 BITMAP DISCARDABLE "D:/My Documents/001.BMP"
刚才讲的是链接式的还是嵌入式的啊,为什么dialogs的代码里面会有这个bmp文件的路径啊 不是嵌入进去了吗?如果这个时候我吧 001.bmp挪走还会显示吗?
答:这个路径是编译时用到的,所以在编译的时候如果把图片挪走就会编译失败。但是一旦编译成功就不需要001.bmp了。建议把所有资源都放到工程目录下,这样可以随便移动工程。
文件对话框及嵌入工程
最新推荐文章于 2024-08-15 01:21:25 发布