uCGUI窗口操作要点

1、 创建一个窗口的时候,会给此窗口发送“创建(WM_CREATE)”消息,从而执行它的回调函数;如果创建窗口的标志带有“可视标志(WM_CF_SHOW)”,那么在后续执行GUI_Exec()函数时会对窗口进行重绘,也就是将这个窗口显示出来。如果创建窗口的标志带有“激活标志(WM_CF_ACTIVATE)”,那么这个窗口在创建的时候也会被激活,否则不激活。


2、 WM_SendMessage()发送消息的函数,本身也是执行消息的函数(通过调用接收方的回调函数),所以调用发送消息的函数发送的消息只可能被处理一次。


3、 WM_SelectWindow()选中窗口的意思是:接下来操作(画画、写字)的对象是选中的窗口。比如说电脑的桌面打开了很多窗口,而只有活动窗口才会不断的重绘,未被激活的窗口是不会变化的。


4、 删除一个窗口的时候,会给它父亲发送“孩子被删除”( WM_NOTIFY_PARENT、WM_NOTIFICATION_CHILD_DELETED)的消息,也会给删除窗口自己发送“删除消息”(WM_DELETE),删除一个窗口的时候会把它的孩子依次删除(递归调用);删除一个窗口的时候,也会使与之有黏贴关系的窗口(比方说其父窗口)设置为无效,将来执行WM_Exec()时对这些窗口进行重绘。


5、用户为了使窗口重绘,需要令窗口无效,这个时候无效窗口总数就会加1,在后续执行GUI_Exec()或者WM_Exec()时对窗口进行重绘。


6、 WM_SetBkWindowColor()设置桌面背景,会令窗口变为无效,从而引发重绘操作。


7、 如果不设置桌面窗口背景,桌面是不可能被重绘的。这是因为桌面窗口默认的背景颜色是无效的颜色。


8、GUI_Clear()函数是底层的GUI显示函数,用户调用马上就能见到效果。它设置的颜色取自全局变量GUI_Context中的BkColor。需要注意的是:GUI_Clear()函数清除的是当前激活的窗口。


9、 GUI_Exec()或者WM_Exec()会完成所有的重绘工作,才退出函数的执行。 WM__SendMessage()可以给窗口发送重绘消息,而且这种重绘立即被执行。GUI_Exec或者WM_Exec(),它们在重绘的时候按照从底层窗口(桌面)依次到顶层窗口的顺序进行重绘。因此,重绘的过程中,肯定会不断的激活不同的窗口(也就是更改GUI_Context.hAWin),而且在这些窗口的回调函数中会不断的更改全局变量GUI_Context中的其他成员值。不过,在执行GUI_Exec或者WM_Exec()刚开始的时候,GUI_Context的值就已经被保存,当重绘执行完成的时候,就又恢复到之前的状态,这也是我们希望看到的。


10、 桌面是最底层的窗口,依次向上是顶层的窗口。创建一个窗口的时候,如果没有指定创建标示符,默认情况下它会被放置在顶层。


11、 WM_Init函数在创建第一个窗口--桌面窗口的时候,将其设置为无效。也就是说,创建桌面窗口的时候,默认是需要重绘的。


12、 WM_SetCallback()在设置窗口的回调函数,会使窗口无效,引起窗口的重绘。


13、WM_ShowWindow()会使当前窗口无效,并设置窗口标志为可视“WM_SF_ISVIS”。


14、WM_HideWindow()会使其父亲和其同胞无效,并将其窗口可视标志“WM_SF_ISVIS”清除。


15、创建一个列表框,默认的选择是第一行,对应的选项序号是0。一个列表框对应的是一个窗口,但是它占用的动态内存却是几个32字节。

 

posted on 2014-11-18 16:03  amanlikethis  阅读(1349)  评论(0编辑  收藏  举报