庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>VC语言>基础教程>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

编写基于对话框的应用程序

 作者:本站收集   日期:2005-8-4 16:47:42
字号选择〖 〗/ 双击滚屏 单击停止   
    基于对话框的应用程序十分常用于像实用程序、系统监控程序甚至向导这样的小型任务中。绝大多数情况下,它们专门用于把复杂程度降到最低限度的应用程序中。实际上,可以安全地假定基于对话框的应用程序只使用很少的控件。
    我们要看一看另外一个简单示例。在这个示例程序中,我们要组合使用ActiveX控件和内置部件,以把所需的实际代码量减少到最低限度。下面的步骤将帮助你建立一个空的结构,随后再填充代码。
    1. 打开Visual C++(如果还没有打开的话)。
    2. 使用File | New命令打开New对话框,然后选择Project选项卡。本例中,我们将在工程类型列表中选择MFC AppWizard(EXE)工程类型。
    3. 在Project Name域中键入应用程序的名称。本样本程序使用的名称为Dia-log,但你也可以使用任何自己喜欢的名称。必要时修改Location域的值(单击Location域旁边的按钮进行选择)。
    4. 单击OK按钮,你会看到如下图所示的MFC AppWizard - Step 1对话框。



    5. 选择Dialog Based选项按钮,然后单击Next,系统显示如下图所示的MFCAppWizard - Step 2 of 4对话框。


    6. 在Please Enter a Title for Your Dialog域中键入Sample DialogApplication。注意,在这个对话框中可以给应用程序增加一些其它特性,比如上下文相关帮助等。Automation复选框允许把OLE自动化功能添加到应用程序中。你也可以在这个对话框中对应用程序增加Windows Sockets支持棗该支持允许应用程序通过TCP/IP网络进行通信。


    技巧 把MFC静态链接到应用程序中可以减少发布应用程序时必须分发的文件的数量。实际上,如果愿意的话,你可以只向其他人提供应用程序的可执行文件。这种方式也提高了应用程序在各个所安装机器上正常运行的机会,原因在于应用程序总是访问设计应用程序时使用的MFC版本。静态链接的缺点是应用程序变得更加庞大,而且在加载时占用更多的内存。另外,无论什么时候,当你想给应用程序增加新的特性时,都必须重新链接应用程序,不久这种方式就会让人感到厌烦。


    7. 单击Next,然后再单击Next。我们不需要改变这两个对话框中的设置,但应该知道它们的作用。前一个对话框让你选择是否要在代码中添加注释。你还可以选择MFC是静态还是动态链接到应用程序中。
    8. 单击Finish。Visual C++显示如下图所示的New Project Information对话框。这是你确保各种设置都正确无误的最后一次机会。不正确的设置选择将延长工程的开发时间而不是缩短开发时间。

    
    9. 单击OK。MFC AppWizard将生成应用程序的框架。
    现在我们已经得到了一个可以使用的基本程序框架,到了实际开始编写示例程序的时候了。由于这个程序要使用Microsoft Calendar控件,所以我们要做的第一件事就是安装所需的ActiveX控件。使用Project | Add to Project | Compo-nents and Controls命令显示如下图所示的Components and Controls Gallery对话框。 
     注 确保已经安装了Visual C++携带的OCX控件,否则可能就没有可用的Microsoft Calendar控件。

    双击Registered ActiveX Controls文件夹,你就会看到机器中已经注册的一系列控件。找到Calendar Control 8.0列表项(这是本版Visual C++携带的控件之一),然后单击Insert。Visual C++将显示一个对话框询问是否真要把这个控件插入到工程中。单击OK。Visual C++将添加某些包装类到应用程序中,以便为其提供该ActiveX控件。Visual C++在如下图所示的Confirm Classes对话框中显示这些类的类名。
    单击OK接受缺省的ActiveX控件类设置。现在我们有了一个可以使用的新控件,它被添加到了工具箱中。单击Close按钮关闭Components and ControlsGallery对话框。

    现在到了设计对话框的时候了。图2.1显示了设计好的对话框。该对话框的当前大小为300×200,我把Calendar控件的大小调整为230×186,这样该控件上的数字就看得清楚些了。请注意,虽然该应用程序现在并没有运行,但Calendar控件依然立即显示当前日期,这是由于在把ActiveX控件放置到对话框上时,该控件自动激活了自身。如果在你把某个控件放置到对话框上时并没有发生其它反应,或许该控件没有正确地安装。显然,需要检查控件的文档以确保控件按所期待的方式工作。

    技巧 在屏幕右部状态条第二个方框中总能看到当前控件的大小。紧挨着该方框的左边方框中显示了所选控件相对于显示区左上角的位置。利用这两个方框可以十分精确地控制控件在对话框上的大小和位置。

    如果现在编译和运行这个应用程序,你会发现它只是个半成品。日历会让你选择新的日期,单击OK按钮后对话框也会消失,但也只是如此,该程序现在还没有更多的其它功能。

    在给Calendar控件添加代码之前,我们还要为它创建一个成员变量。创建成员变量是件简单的事,按住CTRL键双击Calendar控件,系统显示如下图所示的Add Member Variable对话框。

    由于该控件是应用程序中使用的第一个Calendar控件,因此在m_(不要删除m_)后键入Calendar1,单击OK创建该变量。
    下一步要完成的任务是检测用户是否改变了该控件。右击Calendar控件,你会看到一个上下文菜单,从中选择Events,系统显示如下图所示的New Win-dows Message and Event Handlers对话框。

    该对话框包含了控件可以监视的所有事件的完整列表。程序员在设计该控件时设置了这些事件。在本例的情况下,我们要监视DblClick事件。加亮DblClick事件列表项,然后单击Add and Edit按钮,Visual C++显示Add Member Function对话框。单击OK接受缺省的函数名,你会看到一个空的函数体。现在我们要完成的任务就是加些代码让函数正常工作。程序列表2.3显示了所需的程序代码。



    现在,你可以运行该应用程序了,它也确实会完成一些任务。编译并运行这个应用程序。双击任意日期,程序显示如图2.2所示的对话框,该对话框以易于阅读的方式显示了你在Calendar控件中所选的日期。虽然这个功能现在看起来并没有多大用处,但你有多种方法轻易地扩展这个实用程序的功能。例如,你可以在每次双击日期时显示一个弹出式的小型记事本,在记事本中记录每天的日程安排。毫无疑问,这个程序不会取代你的合同管理器,但作为一个笔记本它确实干得不错棗特别是在空间有限的膝上机和你并不想让大型应用程序用尽电池的情况下。

    Calendar控件提供了不少的功能——绝大部分本章中都没有涉及。再做一个把日期设置回当天日期的按钮简单方便,这样,当你打电话离开一会儿时就可以用了。添加这样的按钮一点也不难,图2.3显示了我已经添加到现存工程中的按钮。它的ID为IDC_RESET_DATE,标题为Reset Date。如果把该按钮放置在243,39并把它调整到50×40的大小时,对话框看上去更舒服些。
    既然我们有了按钮,那就再添加几行代码吧。右击该按钮并从上下文菜单中选择Events,系统显示New Windows Message and Event Handlers对话框,选择BN_CLICKED事件,然后单击Add and Edit,单击OK接受缺省的过程名,你会看到一个空的过程。程序列表2.4提供了要在该过程中添加的代码。

 
    现在只要你单击一下Reset Date按钮,Calendar控件就会向用户返回当前的月份和年度。虽然这段代码并不复杂,它却展示了在不增加应用程序使用复杂程度的情况下给对话框应用程序添加功能的途径。当然,即使只有少量的这种按钮过上一阵子也会让人厌倦。
上一篇:编写控制台应用程序    下一篇:编写单文档应用程序  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-8-4 16:47:42
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿