一个控件根据它的特性绘制自己。这一工作通过调用WM的API函数WM_Exec()来完成。如果在程序中没有调用WM_Exec(),就必须调用WM_Paint函数来绘制控件。在多任务环境的uC/GUI,一个后台任务通常用于调用WM_Exec()并更新控件(及其它所有带有回调函数的窗口)。这样就不必手动的调用WM_Paint();然而,手工调用仍然是合法的,如果你想保证控件能立即内重绘的话,这样做也没有意义。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
当一个控件的属性的改变时,控件的窗口(或者它的一部分)被标记为无效,但是它不会立即重绘。因此,这部分代码运行非常快。重绘在后面的时间通过WM完成,或通过为控件调用WM_Paint函数(或者WM_Exec(),直到所有的窗口都被重绘)来强制执行。
用于控件的动态存储器
在嵌入式应用当中,通常来说,使用动态存储器确实不是非常合适,因为存储残片效果的缘故。有很多不同的方式可以用来这种情况,但是它们都工作在一个受限制的方式里,随时内存区域都可能被应用程序中的一个指针引用。因为这个原因,uC/GUI使用一个不同的方法:所有物体(以及所有在运行时存储的数据)被存入一个句柄引用的内存区域当中。这会使以分配好的内存区域在运行时重新分配成为可能。因而避免了使用指针时出现的长时间分配的问题。所有控件因此通过句柄引用。
文章评论(0条评论)
登录后参与讨论