最新Intel-Visual-Fortran窗口程序设计.doc
《最新Intel-Visual-Fortran窗口程序设计.doc》由会员分享,可在线阅读,更多相关《最新Intel-Visual-Fortran窗口程序设计.doc(354页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateIntel-Visual-Fortran窗口程序设计Intel-Visual-Fortran窗口程序设计第二章 Intel Visual Fortran编译器的使用在窗口程序设计之前,让我们先了解一下Intel Visual Fortran 编译器的基本使用方法和编译器中的项目类型。2-1 Intel Visual Fortran 编译器简介Fortran是一种高级的
2、计算机编程语言,所有Fortran程序源码必须经过编译器的编译、链接,才能被翻译成计算机所能识别的机器码,从而完成源程序设定的任务。Fortran语言的编译器较多,PC中Windows平台上常见的有: Fortran PowerStation 4.0 微软公司将Fortran90集成到Developer Studio开发环境中之后推出的Fortran编译器,真正实现了Fortran的可视化编程; Digital Visual Fortran 微软公司和数据设备公司(DEC)联合开发的功能更强大的Fortran编译器; Compaq Visual Fortran 数据设备公司(DEC)和康柏公司
3、(Compaq)合并后推出的Fortran编译器以及康柏公司并入惠普后推出的最新版本; Intel Visual Fortran 11.x 惠普公司将Windows下的编译器转售给Intel公司后,由Intel公司开发的Fortran编译器,目前是最新版。 Salford Fortran 95 由silverfrost公司开发的能用于基于Win32平台和.net平台的应用程序开发,支持完整的Fortran95语法和部分Fortran2003语法。其实,Fortran编译器还有很多,如Lahey Fortran、Absoft Fortran和OpenWatcom等。从目前的使用情况来看,前四个编
4、译器在Windows平台上最为常见。考虑到Fortran编译器目前的发展情况以及各种编译器版本使用的广泛性,本书所有的程序都基于Intel Visual Fortran 11.x编译器。跟C+一样,Fortran语言本身没有提供图形界面输出方面的功能,所以为了用Fortran编写Windows图形接口程序,必须借助编译器提供的扩展功能。Intel Visual Fortran编译器封装了几乎完整的Win32 API和OpenGL函数,提供了良好、稳定的编程接口,所以,借助Intel Visual Fortran编译器,Fortran既能完成UI设计,也能胜任图形编程,从这个意义上讲,C能做到的
5、,Fortran也能做到。2-2 Intel Visual Fortran编译器的使用为了编写图形界面程序,首先应安装Intel Visual Fortran编译器。编译器的安装过程比较简单,这里不再赘述。不过有几点需要注意: 先安装Visual Studio 2008; 然后安装Intel Visual Fortran编译器,并集成到Visual Studio 2008; 不建议用户安装Visual Studio 2005,因为和Intel Visual Fortran的集成性不是很好,按照笔者的经验,曾经出现过不能正常使用控件箱的情况; 建议完整安装Intel Visual Fortran
6、编译器自带的帮助文件,尤其是Windows窗口程序设计的开发人员。安装Intel Visual Fortran编译器后,就可打开Visual Studio 2008开始编译Fortran程序了。具体步骤如下: 双击启动Visual Studio 2008,选择“文件”菜单中的“新建”-“项目”,弹出如图2.1所示的对话框,从中选择要建立的Fortran项目类型和模板,同时指定项目名称及其保存位置,单击“确定”按钮即可完成新项目的创建; 按下组合键“Ctrl+F5”运行程序;此处省略了程序的调试过程,对程序调试不熟练的读者请阅读相关资料或文献。图2.1 “新建项目”对话框2-3 Intel Vi
7、sual Fortran 中的项目类型程序开发之前,我们应充分了解各种项目类型的特点。启动Visual Studio 2008,按前面的步骤打开图2.1所示的对话框,在“项目类型”中列出了Intel Visual Fortran编译器可创建的几种项目类型。 Console Application 是基于字符模式的应用程序,这类项目适于不需要图形输出的程序设计,优点是执行速度快。图2.2所示为Console Application类工程的输出窗口。 图2.2 Console Application工程输出窗口 Library 其中包括两种库文件工程: Static Libraries 静态库文件
8、,是已编译的、独立于主程序的程序段,适合于大型项目中程序的结构组织和程序间函数或子程序的重复调用。但是,静态库文件会插入程序调用点,磁盘空间浪费较大;同时当静态库文件需要升级的时候,会带来工作效率的低下。为了解决这些问题,出现了动态链接库。 Dynamic-link Library 动态链接库,很好地解决了静态库文件存在的问题,所以广泛使用在Windows程序设计中。 QuickWin Application 多文档窗口应用程序。编译器封装了部分Win32 API函数,使Fortran界面的开发变得更加容易。不管QuickWin Application应用程序有多简单,默认情况下界面中总会出现
9、预设的系统菜单和状态栏。其运行界面如图2.3所示。图2.3 QuickWin Application工程输出窗口 Standard Graphics Application单文档窗口应用程序,通常以全屏的形式出现,如图2.4所示。全屏形式和窗口界面之间可通过组合键“Alt+Enter”互相切换。跟QuickWin Application不同,Standard Graphics Application程序界面中并没有菜单栏和状态栏。图2.4 Standard Graphics Application工程输出窗口 Windowing Application 窗口界面应用程序。经过编译器封装,Win
10、dowing Application 应用程序能够调用完整的Win32 API系统函数,所以Windowing Application应用程序的弹性更大、更加复杂。第三章 QuickWin Application基础本章中,我们将利用QuickWin工程来创建简单的窗口程序。相比以前的命令行程序,图形界面窗口程序使用户在视觉和操作上更容易接受。3-1 最简单的窗口程序现在到该做些什么的时候了。如果您以前的程序都是基于Console工程类型,那么,从现在开始,让我们丢掉那个很不友好的“黑屏”,一起体验窗口程序设计的乐趣。跟所有的语言一样,最简单的程序总是向世界问好的例子。由于第一次创建Fortr
11、an界面程序,接下来的步骤会较为详细,将逐步引导大家创建第一个窗口程序。具体过程如下: 启动Visual Studio 2008; 选择“文件”菜单中的“新建”-“项目”,弹出如图2.1所示对话框; 在“项目类型”和“模板”中选择“QuickWin Application”,指定项目的保存位置和名称,单击“确定”按钮; 编译器界面中出现了如图3.1所示的“解决方案资源管理器”;图3.1 解决方案资源管理器 移动鼠标至“Source Files”文件夹,单击鼠标右键,选择“添加”-“新建项”,弹出如图3.2所示的对话框;图3.2 “添加新项”对话框 选择“Fortran Free-form Fi
12、le(.f90)”模板,单击“添加”按钮; 编译器界面中出现源代码编辑器,将下面的代码添加到“Source1.f90”;#001 ! example 3-1#002 program main#003 implicit none#004 write(*,*)hello world!#005 end program main 按下组合键“Ctrl+F5”运行程序,得到程序界面如图3.3所示。图3.3 Example3-1程序运行界面这个程序中,简单的四个语句却实现了典型的Windows窗口界面,如菜单和状态栏等,所以,用Fortran编写窗口界面程序并没有想象中的困难,经过编译器对相关函数的有效封
13、装后反而更加容易。程序编译运行后,随着主窗口弹出了一个小提示窗口,同时,子窗口占了界面主框架的一部分,这些可能和读者想象的窗口程序有所区别。为了使这个简单的窗口程序更“像”,需要对程序做些修改。3-2 “真正”的窗口程序为了让窗口界面变得更容易理解,首先应该去掉程序运行后的对话框提示。方法有二: 单击“否”,程序继续运行,但是每次执行程序时都有会出现该信息提示,使用不方便; 借助函数SETEXITQQ让程序自动处理。SETEXITQQ函数用来设置QuickWin Application程序退出时的提示行为,为正确使用该函数,必须在程序中包含语句“USE IFQWIN”。函数语法为:USE IF
14、QWINinteger ( kind=4 ) : exitmode, resultresult = SETEXITQQ (exitmode)exitmode = QWIN$EXITPROMPT为程序的默认情况;或 = QWIN$EXITNOPERSIST时,编译运行后窗口出现后马上消失;或 = QWIN$EXITPERSIST时,运行后窗口正常显示,没有任何提示信息。将SETEXITQQ函数加入例3-1,程序变为:#001 ! example 3-2#002 program main#003 USE IFQWIN#004 implicit none#005 integer( kind=4 )
15、: results#006 #007 write(*,*)hello world!#008 results = SETEXITQQ (QWIN$EXITPERSIST)#009 end program main运行程序,结果如图3.4所示。图3.4 Example3-2程序运行界面此时,信息提示框不再出现,但是子窗口和框架主界面并不统一。为了程序界面的整体感,程序主界面打开的同时,程序子窗口应最大化。为此,程序需要调用函数SETWSIZEQQ设置窗口的尺寸和位置,其语法为:USE IFQWINinteger ( kind=4 ) : result, unittype (qwinfo) : wi
16、nforesult = SETWSIZEQQ (unit, winfo)其中,unit为窗口代号,如果要最大化子窗口,则unit为子窗口代号,如果要最大化主窗口,其值应为已定义的符号常量QWIN$FRAMEWINDOW。需要注意的是:如果程序中没有用Open语句显式打开子窗口,则默认子窗口的代号为0、5或6。Winfo是派生自用来存储窗口信息的qwinfo结构体变量,其结构如下:TYPE QWINFO INTEGER(2) TYPE ! 请求类型 INTEGER(2) X ! 窗口左上角的X坐标 INTEGER(2) Y ! 窗口左上角的Y坐标 INTEGER(2) H ! 窗口高度 INTE
17、GER(2) W ! 窗口宽度 END TYPE QWINF其中TYPE可能的取值为:Winfo% TYPE = QWIN$MIN时,最小化窗口;或 = QWIN$MAX时,最大化窗口;或 = QWIN$RESTORE时,恢复最小化窗口到之前的大小;或 = QWIN$SET时,根据Winfo中的其它值设定窗口的位置和大小。考虑到子窗口最大化,修改例3-2,代码如下:#001 ! example 3-3#002 program main#003 USE IFQWIN#004 implicit none#005 integer( kind=4 ) : results#006 type (qwinf
18、o) : winfo#007 #008 winfo%type = QWIN$MAX#009 ! 最大化主窗口#010 results = SETWSIZEQQ(QWIN$FRAMEWINDOW, winfo)#011 ! 最大化子窗口#012 results = SETWSIZEQQ (0, winfo)#013 write(*,*)Hello World!#014 ! 取消提示信息#015 results = SETEXITQQ (QWIN$EXITPERSIST)#016 end program main编译、运行上述程序代码,结果如图3.5所示。显然主窗口最大化的同时,子窗口也最大化了。
19、图3.5 Example3-3程序运行界面通过前面的代码,我们掌握了简单窗口程序的呈现方法。但是到目前为止,子窗口的黑色仍然让人难以忘却!为了改善视觉效果,我们必须更改窗口的背景色。3-3 窗口和文本颜色对于大多数搞工程的技术人员来说,数值计算本身难度较大,再加上只有黑白两种呈现色,那么程序开发的体验显然是很糟糕的。为了更好的呈现环境和视觉效果,程序开发中颜色的设置是必要的。Quickwin工程中提供了多个颜色设置的函数,其中函数SETBKCOLORRGB用来更改窗口背景色。函数语法如下:USE IFQWINinteger ( kind=4 ) : color,resultresult = S
20、ETBKCOLORRGB (color)其中color是背景色,有两种方式来指定:其一是用十六进制数表达RGB分量,从左向右分别代表B、G、R,如“#FF0000”代表蓝色,“#00FF00”代表绿色,“#0000FF”代表红色;其二是用函数RGBTOINTEGER将RGB分量值转换为代表相应颜色的整数,函数语法为:USE IFQWINinteger ( kind=4 ) : color color = RGBTOINTEGER(255,0,0)改变例3-3中程序窗口的背景色,程序变为:#001 ! example 3-4#002 program main#003 USE IFQWIN#004
21、 implicit none#005 integer( kind = 4 ) : results, color#006 type (qwinfo) : winfo#007 #008 color = RGBTOINTEGER(125,120,0)#009 ! 目的是改变背景#010 results = SETBKCOLORRGB (color)#011 winfo%type = QWIN$MAX#012 ! 最大化主窗口#013 results = SETWSIZEQQ(QWIN$FRAMEWINDOW, winfo)#014 ! 最大化子窗口#015 results = SETWSIZEQQ
22、(0, winfo)#016 write(*,*)hello world!#017 ! 取消提示信息#018 results = SETEXITQQ (QWIN$EXITPERSIST)#019 end program main程序中第810行代码的目的是修改窗口背景色。但是程序运行后,子窗口的背景色并没有发生变化,仅是文本所在范围的背景色发生了改变!情况如图3.6所示。图3.6 Example3-4程序运行界面为解决这个问题,需要重新研究窗口背景色设置函数SETBKCOLORRGB。其实,该函数并不能自动改变窗口的背景色,只有当调用子程序CLEARSCREEN或者有文本读写发生时,背景才会改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 Intel Visual Fortran 窗口 程序设计
限制150内