定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx

上传人:b****2 文档编号:17768261 上传时间:2023-08-03 格式:DOCX 页数:18 大小:357.89KB
下载 相关 举报
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第1页
第1页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第2页
第2页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第3页
第3页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第4页
第4页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第5页
第5页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第6页
第6页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第7页
第7页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第8页
第8页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第9页
第9页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第10页
第10页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第11页
第11页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第12页
第12页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第13页
第13页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第14页
第14页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第15页
第15页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第16页
第16页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第17页
第17页 / 共18页
定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx

《定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx》由会员分享,可在线阅读,更多相关《定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx(18页珍藏版)》请在冰点文库上搜索。

定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息.docx

定制使用应用程序向导生成的应用程序所用的资源MFC程序中图标web链接About对话框version版本信息

如前所述,在设计应用程序的工作区时,VisualC++会自动创建某些类型的资源。

例如,除非另外告知MFCAppWizard,否则它会在程序中包括About(关于)对话框。

这样做的原因是简化应用程序的设计,为开发人员提供一些便利条件,还可以告诉用户是谁设计了他们正在使用的程序。

一些缺省资源很有趣,而不是显得很功利。

即使你确实不需要特殊的程序图标,还是没有任何办法告诉应用程序向导,你并不想要程序的自定义图标。

另外,包括图标的原因也很简单——Windows需要它在Explorer中显示程序。

创建的每一个工程都应该有版本信息。

这一次这个信息对你是有益处的,因为它帮助你掌握用户拥有哪一种版本的产品。

注VisualC++至少要提供下述缺省资源:

自定义应用程序图标、About(关于)对话框和版本信息。

如你所见,自动创建这些缺省资源的原因是很明显的。

事实上,这三种资源代表了对每个工程你都应该考虑定制的部件。

尽管你应该考虑自己的标准定制技术,但是本节仍会给出一些关于处理缺省资源的提示和技巧。

应用程序图标

用VisualC++创建的每一个MFC应用程序都有一个缺省的应用程序图标。

事实上,图标的名称总是相同的:

IDR_MAINFRAME。

你会发现,这个图标不仅定义程序图标在Explorer(或任何其它显示程序图标的程序)中的外观,还同样影响程序的内部表现。

例如,About(关于)对话框显示这个图标作为向用户介绍应用程序信息的一部分。

你所创建的所有MFC应用程序开始时都有一个相同的图标,如图3.1所示。

注虽然可以在应用程序中添加许多需要的图标,但缺省的自定义应用程序图标是IDR_MAINFRAME。

如果你并不在乎人们在安装你的应用程序时看到的图标是什么,那么他们就会看到这个MFC徽记。

就我个人来说,希望徽记看上去更有趣一些,你也应该如此。

毕竟,每次程序用户在Explorer中寻找或从Start(开始)菜单中选择时,都会看到这个图标。

技巧一定要为应用程序同时修改32×32图标(如图3.1所示)和16×16图标。

32x32图标是在Explorer中看到的图标。

16×16图标显示在程序的控制菜单中和Windows任务条上。

Device下拉列表框(如图3.1所示)是选择32×32或16×16图标的位置。

决定用应用程序创建文档时,出现第二个缺省图标,就像我们在第二章的Sng1_Doc实例中所做的一样。

在这种情况下,会看到已创建的每一个文档类型的IDR。

在我们的实例中,它是IDR_SNGL_DTYPE。

它们会有相同的起始图标;图3.2显示了MFCAppWizard提供的缺省图标。

与应用程序图标不同,如果应用程序支持多种文档类型的话,它几乎总是要强制你定制文档的图标。

除了绘图功能外,如果想创建有效的图标,还要了解可供随意使用的工具。

所需要的全部工具都显示在窗口的右侧。

它们包括一套标准的绘图工具(Graphics工具条)和一个颜色图表(Colors工具条),这些工具条可以象我们讨论过的任何其它工具条那样隐藏或显示它们。

如图3.2所示的Graphics工具条上的工具你不应该都不熟悉。

你已经熟悉了标准的选择工具、画线和各种椭圆及矩形的工具。

但是,VisualC++还包括喷雾器工具和不规则选择工具,它们使绘画变得更加容易。

你还会发现,Magnify(放大)工具比一些绘图程序中的相同工具更为出众棗它可以将图画放大至正常大小的八倍。

你还需要了解Colors工具条上的两种特殊颜色,由于它们使用监视器符号代替了彩色方框,所以可以很容易地找到它们。

注Colors工具条中的两个监视器包含了当前窗口颜色和透明颜色,后者可以把图标下面的东西显示出来。

上面的监视器可以创建一个透明区。

换言之,你会看到桌面上或放置程序图标的其它地方的该区下面所出现的东西。

下面的显示器允许你创建一个区,它使用和用户窗口前景颜色相同的颜色。

换言之,改变窗口颜色时,图标中该区的颜色也随之改变。

你会看到当前的前景和背景颜色出现在两个监视器的左侧。

前景颜色出现在上面的矩形中,背景颜色出现在下面的矩形中。

让我们来看一个示例,看看可以用这两个图标做些什么。

图3.3显示了为我的程序版本而绘制的示例图标。

和你看到的其它图标相比,也许它们的艺术性不是很高——你们当中一定有艺术家——但比你从VisualC++得到的缺省图标要好些。

很明显,可以用任何方式定制图标。

请试着使用各种颜色。

一定要试验所提到的两种自定义颜色,因为在创建图标时它们特别重要(很多程序员因为不知道如何有效使用这两种特殊的颜色,所以创建的图标看上去很奇怪,它们确实不能与桌面上其它图标协调一致)。

Web链接

如果创建图标时需要一些美妙的灵感,Internet上众多的站点正合乎你的需求。

一个较好的站点是Simpsons。

幸运的是,图标做了索引,所以你不必一次把全部3,000个示例都试一遍。

你还可以找到数量可观的特定主题站点。

例如,

警告决不要以为你可以在计划出售或转赠他人的程序中使用Internet上找到的任何图标(或与此相似的其它图形)。

而要假定这些资源有利于引发灵感,除非你得到了原始编写者的书面许可,不可把这些资源用于其它用途。

在Internet提供的开放环境中,侵权现象是严重的,也比较容易发生。

从经验来看,最好的办法是创建你自己的图标,或者从可靠的来源那里得到准许用于商业目的的许可。

请注意,我在两个图标上都使用了透明颜色,并赋予它们三维的外观。

再说一句,虽然它们并非那么富于美观,但确实给了用户一种特别的感觉。

很明显,编辑器内的透明着色所表现出来的和用户看到(实际上或者看不到)的不同。

下面是在Explorer内看到的两个图标的外观。

技巧在修改图标后,一定要再次编译程序,否则它不能在Explorer中显示。

运行程序也是一个好主意,因为在第一次运行程序时,VisualC++会制作注册表项目。

最后,一定要在Explorer内使用View|Refresh命令。

否则,你看到的依然是Explorer先前存储的老图标。

About对话框

为应用程序定制About对话框并不麻烦。

事实上,使用前一节中介绍的信息修改应用程序图标时,就已经开始定制该对话框了。

VisualC++自动将你为应用程序创建的图标添加到缺省About对话框。

下图是我们的示例应用程序使用的缺省About对话框。

技巧因为显示在缺省About对话框内的信息总是基于你提供给MFCApp-Wizard的输入,所以要给出尽可能清楚的信息。

这样做将减小后续的工作量。

这些设置还会影响我们将在本章后面看到的版本信息。

那么,需要在标准的About对话框中提供些什么呢?

缺省About对话框为你提供了一些灵感。

基本上,一个About对话框应该提供四条信息:

公司名称,版权信息,产品名称和版本号。

如果提供了这样四个必要的项目,应用程序的About对话框就有了它绝对应该拥有的一切。

请注意,缺省About对话框提供了这四条必要信息中的三条——如果你不想做太多工作的话,也只需要添加上公司名称即可。

当然,你可能想将其它一些必要的信息提供给应用程序中的About对话框。

例如,让用户知道该去哪里获得技术支持是很重要的。

添加电话号码和几个访问指令是个好主意,这也无须消耗太多的空间。

一些公司还添加了产品注册序号,作为技术支持信息的一部分,但提供这类信息要从注册表或INI文件开始。

某些有用的信息包括了可用于支持应用程序的当前系统资源。

例如,VisualC++提供了一种将当前磁盘和内存统计值添加到About对话框的方式,而且并不需要你自己多做多少工作。

让我们看看如何才能在对话框中添加这种能力。

下面的过程帮助你将磁盘和内存统计值添加到所创建的任一About对话框(或者与此相似的任一其它对话框)中。

1.调整About对话框的大小。

现在的对话框太小,放不下额外的信息。

很明显,你也不想把它做得太大,因为About对话框应该足够小,以适应可能存在的最小显示区。

在本示例中,将About对话框的大小调整为250*150,这应该足以显示磁盘和内存统计值了,也为版权和其它辅助信息留出了空间。

2.将两个静态文本框控件添加到About对话框中。

前一个用于显示内存统计值,后一个用于显示磁盘统计值。

3.使这两个控件的大小为150*18。

将内存统计值静态文本框控件定位在40,40。

将磁盘统计值静态文本控件定位在40,65(这些定位数字假定,你没有为了适应更多的公司名称或产品信息而改变缺省静态文本框控件的大小)。

4.右击内存统计值静态文本框控件,然后从上下文菜单中选择Properties(属性)。

将该控件的ID字段改成IDC_MEMORY。

对磁盘统计值静态文本框控件做相同的处理。

但是,在这个事件中将ID字段改变成IDC_DISK。

不要选中两个控件的Group(组)框——我们想把它们作为独立的静态文本框控件使用。

现在,我们有地方放置信息了,可以添加收集信息的代码了。

5.使用Project|AddtoProject|ComponentsandControls显示ComponentsandControlsGallery对话框。

在LookIn字段中双击VisualC++Components,你会看到如下图所示的一系列部件。

6.加亮SystemInfoforAboutDlg部件,然后单击Insert(插入)。

VisualC++会显示一个对话框,询问是否确实要安装该部件。

7.单击OK。

VisualC++会显示另一个对话框,告诉你正在安装的部件会添加信息到About对话框中。

8.单击Yes继续安装。

VisualC++完成SystemInfoforAbourtDlg.部件的安装。

9.单击Close关闭ComponentsandControlsGallery对话框。

此时,好像什么事也没有发生。

VisualC++只是停在那儿,什么也不做。

除非你知道到哪里去看,否则永远也找不到SystemInfoforAboutDlg.部件所添加的代码。

打开ClassView,然后双击CAboutDlg:

:

OnInitDialog()函数。

你会在初始化代码中看到一些新的条目,按程序列表3.1所示进行修改。

请注意,SystemInfoforAboutDlg.部件提供的缺省代码只从缺省驱动器中检索数据。

可以很容易地修改这个代码,以检索用户机器上所有驱动器的驱动器空间信息。

你得到的内存及磁盘空间字符串缺少像“FreeDiskSpace”这样的提示,这一提示说明了About对话框提供的是什么信息。

可惜的是,没有提示信息将给用户带来更多的疑惑,而不是帮助。

一定要添加某种提示信息(像程序列表3.1中显示的那样)来告诉用户数据的意义。

最后请注意,缺省字符串实际上由更为复杂的统计值组成。

可以很容易地将这个额外的信息添加到你的About对话框。

下面是这个代码产生的最终结果。

这个About对话框并不提供用户所需要的一切,但我们将在本章的下一节中进一步修改它。

现在,About对话框自动提供了磁盘空间和内存的统计值。

它还提供了程序名称、版本和版权信息。

我们将在下一节看到,你同样可以自动生成这三条信息。

现在再看一看定制问题。

谈到定制这个话题,你可以做许许多多的工作。

目前,应用程序中的某些About对话框本身就是个袖珍型的应用程序,它们或许承担的任务太多了。

如果发现有必要向About对话框中添加按钮和另外一些对话框时,就应该考虑将此信息放置到别的地方,比如某个帮助文件中。

版本信息

你或许未认真思索就跳过了VisualC++自动提供的版本信息资源。

以前,除了知道如何找到版本信息的程序员外,该信息对每个人来说都深深地隐藏了起来。

问题在于,使用Windows95和WindowsNT4提供的Explorer界面,你不能再回避版本信息了。

现在要显示应用程序提供的版本信息,只需右击Explorer中的程序图标,然后从上下文菜单选择Properties(属性)。

选择Properties(属性)对话框的Version(版本)选项卡,会看到如下图所示的画面。

如你所见,缺省版本的信息量很少。

如果是这样的话,用户甚至会不知道他们在和哪一家公司打交道。

因为越来越多的用户开始关注Properties(属性)对话框必须提供些什么,所以对程序员来说,在这里放入适当类型的信息就变得越来越重要了。

技巧填写应用程序的版本信息并不是单向的。

也可以用这个信息填写应用程序的其它区域,这意味着你必须只改变一个地方的信息,使其处于当前状态。

在本节中我们看看如何为About对话框使用这种技术,当然你也可以在其它地方使用它。

高级技巧

在某些情况下,你或许想修改版本信息资源中的文件专用信息。

例如,如果双击FILEFLAGS(文件标记)条目,会看到FILEFLAGS(文件标记)对话框包含两个复选框。

第一个复选框说明版本信息是调试版的版本信息还是发行版的版本信息。

第二个复选框说明该版本信息是否是程序的预发行版。

对你的β版程序来说,可以选中VS_FF_PRERELEASE复选框。

一旦该程序能够正常发行,那么你应该不选中这个复选框。

FILEOS条目是另一个提供定制机会的地方。

假定程序依赖WindowsNT提供的安全特征,你可能想将FILEOS条目从缺省的VOS_WINDOWS32改成VOS_NT或VOS_NT_WINDOWS32。

修改应用程序时保持FILEVERSION(文件版本)和PRODUCTVERSION(产品版本)域为最新也很重要。

使用这些区域有几个不同的方式。

最好的方式是,简单地忽略VisualC++建议的方法,如果这是程序的第一个版本,输入像1.0这样的简单数字。

让我们看一看示例应用程序的版本信息。

可以在ResourceView(资源视图)中的Version(版本)文件夹下找到缺省信息。

缺省资源名是VC_VERSION_INFO。

图3.4显示了缺省的版本信息。

粗实线上的条目通常反映应用程序的设置,并不需要经常修改它们。

以BlockHeader开始的粗实线下

可以双击任何一个文本条目来修改它们。

VisualC++会打开一个用来更改信息的编辑框。

至少,你想更新CompanyName(公司名称),LegalCopyright(合法版权)和ProductName(产品名称)字段。

我通常还添加一些信息到Comments(注释)字段。

例如,关于某个应用程序或其它可执行程序,知道该与谁联系是很方便的,所以我经常添加我的名字和电子邮件地址。

到底向这个区域添加些什么,要视公司政策、合法需要和个人爱好而定。

下面是在Properties(属性)对话框中查看时,我的已修改版本的信息。

既然已经花时间向应用程序中添加了版本信息,那么充分发挥这些信息的作用就显得尤其重要了。

About对话框中相同类型的信息通常还出现在其它需要版本信息的某些地方,所以将两者结合起来是一个好主意。

这样就不会出现About对话框和版本信息不合拍的情形。

程序列表3.2显示了这样的代码,你需要将其添加到CAboutDlg:

:

OnInitDialog()函数中,以将版本信息添加到About对话框(我们在本章的About对话框一节中看到过这个函数,所以这里只说明新的代码棗将此代码放在函数的开始位置)。

这段代码比你一开始想像的要更容易理解一些。

实际上,可以将整个过程分解成如下四个简单的步骤:

1.用GetFileVersionInfoSize()函数获得VS_VERSION_INFO结构的大小。

2.用VS_VERSION_INFO结构大小创建一个足以保持该结构的缓冲区,然后用GetFileVersionInfo()函数获得它。

3.一旦有了VS_VERSION_INFO结构的本地副本,就用VerQueryValue()函数获得各个字符串。

4.在About对话框中显示字符串。

现在,你已经很好地理解了程序的总流程,让我们看看一些细节。

你想知道的第一件事,可能是VerQueryValue()函数调用中的下面一行字符串:

TEXT("\\StringFileInfo\\040904b0\\ProductVersion")

该字符串的第一部分StringFileInfo说明我们要在VS_VERSION_INFO结构中引用什么样的结构。

在处理图3.4中粗实线下的信息时,StringFileInfo是一个常量。

第二参数说明想使用信息的语言版本。

请注意,图3.4中的BlockHeader(块标题)条目说明了我们正使用英语(美国)。

在该条目的右侧,会看到一串8个数字,刚好与我们字符串的数字相匹配。

从这里获得VerQueryValue()调用的数字。

最后,该字符串的最后一部分是版本信息块中字符串的一部分。

在样本字符串的事件中,我们正在寻找ProductVersion字符串。

如果仔细浏览程序列表3.2中的示例代码你会注意到,从一个VerQueryValue()调用到下一个调用,唯一发生改变的,是我们要查找的字符串。

在编译程序之前,还要注意最后一件事。

用Project|Settings(工程|设置)命令显示ProjectSettings(工程设置)对话框。

选择对话框的Link(链接)选项卡。

我们要添加一个特殊的库到程序中,这样才能访问版本信息。

在Ob-ject/LibraryModules(对象/库模块)字段中添加一个名称为VERSION.LIB的条目,然后单击OK。

如你所见,作为一段可以反复使用的代码(编写新程序时,即使需要修改的话,也不会改得太多),你得到了一个能自动更新自身的About对话框。

下面是About对话框的外观。

请注意,我重新安排了静态文本框控件的位置,还分别赋予了两个缺省控件新的标识IDC_PRODUCT和IDC_COMPANY。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2