GUI程序的运行有哪些流程?

GUI程序的运行有哪些流程?,第1张

MATLAB的GUI程序包含两个部分:一个由GUIDE编辑后生成的.fig文件,以及一个同名的.m文件。前者是一个图形,由一个窗口和程序界面所需的各种控件,如按钮、输入框、绘图区、滑动条等组成(事实上,装载这些控件的窗口本身也是一个控件)。后者是与前者配套的,主要包括窗口的生成函数和各控制消息的回调函数。

GUI程序运行的流程:程序首先生成一个窗口;等待并接收消息;在接收到消息后,寻找并执行与该消息对应的回调函数;重复二、三两步直到窗口关闭。GUI程序的.m文件只列出了窗口生成函数和消息回调函数,而消息检测与响应等内核部分由系统自动完成,无需用户参与,因此并没有体现出来。开发者理解GUI程序的运行流程,对于开发GUI程序是很有帮助的。

开发者理解GUI程序的运行流程,对于开发GUI程序是很有帮助的。

如前所述,GUIDE可以帮助程序开发者完成窗口生成、消息检测等工作,因此需要程序开发者完成的工作其实很简单,即在窗口上设计控件、定制控件的消息以及编制与消息对应的回调函数。下面分两部分叙述GUI界面控件设计以及消息与回调函数的设计。

如前所述,GUI程序的m文件由一个一个独立的函数构成,与其他编程语言一样,变量的有效范围仅存在于一个函数之内,在函数之外是无效的。因此,从一个函数内获取函数之外的数据,或者想将数据传递到另一个函数,需要一些特殊的方法或技巧。

在GUI编程中,最常遇到的是对控件属性的获取及修改。例如,在一个用于计算的push_button的回调函数中,需要知道一个输入框控件中的文字,以便转换成数字后进行计算,再将结果输入一个文本显示控件中。这就要求能够获取该控件的句柄,以便对该控件进行 *** 作。在GUI程序的回调函数中都会传递一个参数handles,该参数包括了窗口中所有控件的句柄,是一个“句柄包”(因此称为handles)。有了该参数,调用任何控件的属性都是很容易的。例如:

handles.button_Calculate→string就表示一个“姓名”(tag属性)为button_Calculate的push_button的string属性的句柄。

GUI编程中,有时还需要进行数据的传递,例如将计算的中间结果传递到另一个回调函数中继续进行计算等。用全局变量可完成这一 *** 作。在GUI程序中,也可以定义全局变量,但是对于结构化编程来说,全局变量会给程序设计和维护带来很多问题,因此推荐用另一种方法完成数据的传递。

GUI所有控件的属性中都有一项“userdata”。这个属性是系统专门留给用户来使用的。程序设计时,通过set和get函数可以在这个属性中存取任何格式的数据。虽然这个属性中只能存取一个变量,但从前面的内容可知,MATLAB可以将多个不同类型的变量组合在一个Cell类型的变量中,因此理论上讲,通过一个控件的“userdata”属性可以传递任意多个不同类型的变量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7686147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存