uCGUI窗口操作要点
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字节。
uCGUI窗口操作要点的更多相关文章
- uCGUI窗口重绘代码分析
一.概述 µC/GUI的窗口重绘是学习者理解窗口工作原理和应用窗口操作的重点.µC/GUI的窗口重绘引入了回调机制,回调机制可以实现图形系统调用用户的代码,由于图形系统使用了剪切算法,使得屏幕重绘的效 ...
- Python tkinter模块弹出窗口及传值回到主窗口操作详解
这篇文章主要介绍了Python tkinter模块弹出窗口及传值回到主窗口操作,结合实例形式分析了Python使用tkinter模块实现的弹出窗口及参数传递相关操作技巧,需要的朋友可以参考下 本文实例 ...
- uCGUI窗口初始化过程
一.相关结构体和变量 重要的uCGUI系统全局变量 NextDrawWin 下一个需要重绘的窗口句柄 WM__NumWindows 系统当前的总共 ...
- Structured-Streaming之窗口操作
Structured Streaming 之窗口事件时间聚合操作 Spark Streaming 中 Exactly Once 指的是: 每条数据从输入源传递到 Spark 应用程序 Exactly ...
- WPF: WpfWindowToolkit 一个窗口操作库的介绍
在 XAML 应用的开发过程中,使用MVVM 框架能够极大地提高软件的可测试性.可维护性.MVVM的核心思想是关注点分离,使得业务逻辑从 View 中分离出来到 ViewModel 以及 Model ...
- 使用cmd命令行窗口操作SqlServer
本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver, 首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来 (有图有 ...
- streaming窗口操作
之前一直对窗口操作不太理解.认为spark streaming本身已经是分片计算,还需要窗口操作干啥. 窗口操作最为简单易懂的场景就是,在M时间间隔计算一次N时间内的热搜.当M=N的时候,就像上述所说 ...
- 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口
window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口 项目中经常遇到一个业务逻辑:在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口(或局部更新A窗口)( ...
- JS打开新窗口,子窗口操作父窗口
<!--父窗口弹窗代码开始--> <script type="text/javascript"> function OpenWindow() { windo ...
随机推荐
- mysql语句在客户端与服务端的基本使用
//把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql------------------------------ ...
- Java基础知识强化之IO流笔记65:序列化流 和 反序列化流
1. 什么是 序列化 和 反序列化 ? 序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程.比如转化为二进制.xml.json等的过程. 在序列化期间,对 ...
- Callable、Future和FutureTask使用说明
普通的创建线程,一种是直接继承Thread,另外一种就是实现Runnable接口.但是这两种都无法在执行完任务之后获取执行结果,Callable.Future就提供了这样的便利. Future的方 ...
- jqzoom基于jQuery的图片放大镜
1.引入jQuery和jqzoom插件 <script src="/js/common/jquery-1.6.2.js" type="text/javascript ...
- C#导入导出Excel表的数据
一:C#导入导出EXCEL文件的类 代码如下: 首先将Microsoft Excel 14.0 Object Library 引用导入 using System; using System.Data; ...
- 使用jQuery获取Bootstrap Switch的值
$('#switcher').bootstrapSwitch('state'); // true || false $('#switcher').bootstrapSwitch('toggleStat ...
- Visual Studio 2015中的常用调试技巧分享
.NET 技术交流群:337901356 欢迎您的加入! 为什么要学习调试? 调试(Debug)是作为一个程序员必须要学会的东西,学会调试可以极大的提高开发效率,排错时间,很多人不喜欢调试,但我认为这 ...
- SharePoint移动客户端--Rshare 中的Smart Cache
Rshare中的Smart Cache 能好好的帮助那些移动客户,当网络信号不好或者没有wifi的时候,cache大有可为,只要你在上飞机执勤cache 了相关文档,你就可以在飞行模式下继续你的工作. ...
- JS学习笔记——标准对象
一.对象 在js中万物皆对象. 二.对象类型 number.string.boolean.undefined.function.object等 用typeof来获取对象的类型 如: alert( ty ...
- SQL SERVER 主键约束
主键约束: 遵循关系型模型中的第二范式.唯一的识别一条记录,不能为空. CREATE TABLE Persons ( Id_P int NOT NULL PRIMARY KEY, LastName v ...