原创 uc/gui重绘机制

2007-10-24 23:18 6254 9 9 分类: MCU/ 嵌入式

一个控件根据它的特性绘制自己。这一工作通过调用WMAPI函数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条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条