Windows程序的开发与实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Windows程序的开发与实践王海峰(核工业第六研究所,湖南衡阳421001)摘要:本文从实用角度出发介绍Windows环境及编程特点,Windows程序的结构、组成并结合实际程序讨论了如何运用BorlandcC++语言开发Windows应用程序。关键词:资源;窗口;消息;对话框1Windows的特性Windows提供一个多任务环境,在此环境下,Windows为每一个应用程序分配一个部分屏幕,使得用户可以与每一个应用程序进行交互作用,同时运行几个程序。它的成功归于以下几个特性:虚拟内存、保护模式、多任务、DDE、剪切板、字体、全部模块化设计以及一个充满吸引力的可视界面。在Windows中,每个应用程序在任何时候都可以显示屏幕的某个地方。在输出上,Windows达到了所见即所得的境地,特别是配合中、英文字模软件,用户可得到上百种不同的字体,凡屏幕上能画出的图像,在打印的时候将以同样形式出现。Windows对管理器的特性也是一个明显的优点。这一特性允许你比使用传统的MS—DOS操作能存取更多的内存,从而能使用户使用绝大部分的内存资源,同时能保持系统设计中的灵活性。Windows还提供了开发独立设备的图形能力。因为一个良好设计的Windows应用程序不直接存取图形硬件(屏幕和打印机),它只是和一个视额与系统或带有Windows驱动程序的打印机打交道。独立于设备的图形意味着代码并不依赖于确定的系统配置,而且,用户并不需要为所有可能的视频显示、适配器和打印机开发设备驱动程序。2windows程序设计特点2.1Windows程序设计方法与DOS的区别Windows程序设计方法与MS-DOS程序设计方法的不同就在于Windows是事件驱动的,不是由事件的顺序来控制,而是由事件的发生来控制,事件驱动程序设计是密切围绕着消息的产生与处理展开。Windows中为编程考虑,设有大量函数。Windows编程与DOS不伺之处在于,在界面上,DOS应用程序把显示屏幕全部分给一个程序,其它程序在后等待。而Windows里的每一个程序都可以对显示屏幕的某一部分进行存取;在输入上,Windows应用程序不能像在DOS那样通过getchar()函数直接等待键盘输入。也不能直接写屏,而是使用适当的Windows函数,等待合适的处理环境。2.2Windows编程语言从目前市面流行的与Windows相容的高级语言以BorlandC++独占鳌头。正因为如此,有关BorlandC++在Windows环境下编程的软件、书籍市场上随处可以买到,为程序开发提供了方便。BorlandC++语言适合Windows环境下运行,与Windows融为一体,享受Windows资源,即可利用其资源工具在Windows内建立适合于窗口的图标、菜单、对话框和其它数据。3Windows程序结构3.1面向对象的程序设计面向对象的程序设计现在非常流行,对软件开发工作来说以一种新的观点,有人预言它将导致一次软件工业革命。事实上,在Windows下编写的程序,无形中就已遵循了面向对象的程序概念。Windows本身提供400多个函数,这些函数包括窗口设定、消息处理各种菜单实现、位图选择等。用户可方便地在程序中调用,以完成程序设计。Windows编程时一般要有三个文件,即资源描述文件模块定义文件和程序本身。3.2模块定义文件模块定义文件必不可少,而资源描述文件可根据具体程序而定。在模块定义文件中,主要说明应用程序的名称、版本及用连、运行环境、自定义程序应用程序代码、数据属性堆栈大小、向外输出函数名称等。下面是典型的模块定义文件的内容。NAMEWMENUDESCRIPT10N‘demonstrateanintergratedmenu’EXETYPEWINDOWSSTUB‘WINSTUBEXE’CODEPRELOADMOVEABLEDISCARDABLEDATAPRELOADMOVEABLEMULTIPLEHEAPSIZE1024STACKSIZE5120EXPORTSWndProc模块定义文件在用户未设计时,由Windows系统设置。3.3源程序每个程序都有一个程序入口,在Windows应用程序中由WinMain()函数承担入口作用。一般Windows程序均为以下结构,每部分必不可少,设计者可根据不同用途增加自定义函数。intPASCALWinMain(HANDLEhInstance.HANDLEhPrevIn8tance.LPSTRlpszCmdLine.intnCmdShow):Windows应用程序中,如使用窗口则先要注册,注册内容取决于窗口属性、背景颜色、鼠标、光标、图标、窗口类等,然后可调用Windows产生窗口的函数CreatWindows产生一个满足用户需要的窗口。MSGmsg;HWNDhWnd:WNDCLA8Swndclass;if(!hPrevInstance){wndclass.style=CS—HREDRAWICS—VREDRAW:wndclass.1pfnWndProc=WndProc:wndclass.cbClsExtra=0.wndclass.cbWndExtra=0:wndclass.hInstance=hInstance:wndclass.hlcon;LoadIcon(NULL,IDI—APPLICATION);wndclasshCursor=LoadCursor(NULL.IDC—ARROW)wndclass.hbrBackground=GetStock0bjecL(WHITE—BRUSH)wndclass.1pszMenuName;”“MyMenu”:wndclasslpszClassName:“Menu—Class”:注册已建好的窗口if(!RegisterClass(&wndclass))returnFALSE:产生已注册好的窗口hWnd=CreateWindow(“Menu-Class”.“USERPROGRAM”.WS—OVERLAPPEDWINDOWlWS-HSCROLL.WS—VSCROLL,CW—USEDEFAULT..CW—USEDEFAULT.CW—USEDEFAULT.CW—USEDEFAULT.NULL.NULL.hInatance.NULL):显示窗口ShowWindow(hWnd,nCmdShow):UpdateWindow(hWnd):窗口中各项功能的运行与操作是通过建立消息循环实现的。消息循环就是这样不断地利用DispatchMessage()函数将其分送给窗口函数处理。消息循环处理。While(GetMessage(&msg.NULL.0,0)){Trans]ateMessage(&msg):DispatchMessage(&msg):}资源描述文件并非每个程序必有,关于它的结构在后几章结合实例介绍。4输入程序的设计4.1原地破碎浸出爆破粒度模拟系统原地破碎浸出爆破粒度摸拟系统旨在借助计算机和爆破后粒度分布原理、公式模拟实际爆破情况,根据用户输入的原始数据提供最佳爆破参数,达到控制粒度,最终得到最佳浸出效果的怍用。本系统在Windows环境下编程,下面仅对参数输入部分的程序设计方法作一讨论。4.2源程序矿体爆破特性参数输入程序编制时,对参数值的获取使用了Windows获取字符串函数:GetDlgItemText(HWNDhDlg,intnlDDlgItem,LPSTRlpString,intnMaxCount)。该函数的功能是从对话框的编辑控制中获取一字符串,共包台四个参数:hDlg_----对话框句柄nIDDlgItem----对话框的编辑控制值,通常定义于首文件中;IpString----指向存放字符串的缓冲区.此缓冲区至少有nMaxCount大:nMaxCount----要拷贝到lpString指向缓冲区的字符串的最大个数。函数运行成功后,返回值为lpString所指的字符串的个数。如:GetDlgItemText(hdlg,INPUT1----P1,angle15)控制值名为INPUT1----P1,存参数值的变量名为angle,其长度为15个字符。应用该函数可从资源文件feature.ro中获得用户输入的参数值,如矿体倾角,矿体厚度,段高等l3个参数。参数确定后利用C语言写数据函数fpintf将数据写人文件。{if((in=fopen(“binput1.txt”,“w+”))==NULL){fprintf(“cannotopeninfile\n”):exit(0);{fprinf(in,“%s\n”,angle);fprintf(in,“%s\n”,thick):}fclose(in):}确定与放弃输入数据用C语言ease函数实现。caseIDOK:GetDlgltemText(hdlg.INPUT1-P1/angle,15){fprintf(in,“%s\n”,angle);........}EndDialng(hdlg.TRUE):break;caseIDCAWCEL:EndDial0g(hdlg,FALSE);break:default;returnFALSE;在选定对话框中的OK键时,程序将输入的数据确认井写入文件binout1.txt,然后结束对话框:如对输入的数据有疑问,不想存入文件则可选择CANCEL键,这时程序结束对话框,井返回调用程序。程序中的原始数据显示及新数据的输入是通过调用资源描述文件实现的。这里借用了Windows函数DialogBox,它把资源文件中的数据显示到异幕上。DialogBox(HANDLEhinstance,LPSTRlpTemplateName,HWNDhWndParent,FARPROClpDialogFunc)hInstance—程序的实例旬柄;lpTemplateName—指向对话框样本名称的字符串指针:hWndParent—父窗口旬柄;lpDialogFunc—对话框函数的程序实际地址。如:DialogBox(hInst2,InputlDiaBox,hWnd,fpfnInputlDiaProc)图1为源程序框图。4.3资源描述文件在本程序的资源描述文件中,主要是建立一个函数InputlDiaBox(对话框样本名称)。在此函数中主要运用Dialog语句中的CONTROL项CONTROL项是用户定义的控制项,它可以是下列五类之一:BUTTO一用户定义按钮STATIC—静态正文EDIT—可以编辑的正文classname—标识类的ASCII子符串integer—标识类的整数值如:CONTROL矿体倾角(度),“static”,SS—LEFTfwS—CHILD,5,10,48,l5。其中Static表示静态正文属性,SS—LEFT为静态框,WS-CHILD为Windows子窗口5,l0,48,15表示在x为5,Y为10的地方创建长48高15的子窗口。本文件中利用CONTROL项将13个参数值显示在屏幕上,而后设定图1数据输入程序框图OK键和Cancel键。CONTROL“OK”,IDOK,“button”,BS—PUSBUTTONIWS-TABSTOPIWS—CHILD,94,155,24,14。CONTROL“Cancel”,IDCANCEL,“button”,BS-PUSBUTTONlWS—TABSTOPlWS-CI-IILD,164,155,34,14。系统原始参数值也采用CONTROL项方法,如:CONTROL“70”,INPUTl—P1,“edit”,ES—LEFTlWSBORDERlWS—TABSTOP—WS—CHILD,66,118,64.15。本程序的模块定义文件由Windows系统配置。5几点体会(1)Windows环境下编程不能单纯地熟悉Windows函数而靠C语言编程经验进行,主要是领会Windows程序设计思想,按Windows编程方式思维;(2)理解事件驱动和事件发生的意义及其控制方法,理解消息循环处理的含意及作用,对于初学者可先读别人设计并能正常运行

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功