1:存储设备
uCGUI使用
uCGUI使用
最好多参考几篇文章,比如UC/GUI中文手册与emWin5_UM_SC
0:画图函数
GUI_DrawRect:
在当前窗口中的指定位置绘制矩形(不填充,画线颜色为前景色)
void GUI_DrawRect(int x0, int y0, int x1, int y1);
GUI_FillRect:
在当前窗口中的指定位置绘制填充的矩形区域
(填充前景色)
GUI_ClearRect:清除矩形区域(为
矩形区域填充背景颜色,图形界面用填充背景色达到清除屏幕的 效果
)
不使用存储设备时,绘制操作直接写入显示器。屏幕在执行绘制操作时随时更新,从而在进行各 种更新时使屏幕闪烁。如果在此过程中使用存储设备,则所有绘制操作都在存储器中执行。仅在所有操作都完成后才将最终结果显示在屏幕上,其优点是没有闪烁。
如果不使用存储设备,则可以看到一步步的绘制操作效果,缺点是会出现显示器闪 烁。
使用存储设备时,一次可见到所有例程的效果,就象单次操作一样,不能实际看见中间步骤。
以下例程是在使用存储设备时通常会调用的,基本用法非常简单:
1. 创建存储设备(使用GUI_MEMDEV_Create() )。
2. 激活它(使用GUI_MEMDEV_Select() )。
3. 执行绘制操作。
4. 将结果复制到显示器中(使用GUI_MEMDEV_CopyTo
LCD() )。
5. 不再需要它时,删除该存储设备(使用 GUI_MEMDEV_Delete() )。
2:WM窗口管理器
回调例程:回调例程由用户程序定义,
指示在特定事件出现时图形系统调用特定的函数。它们通常用于在窗口内容更改时自动重绘窗口。窗口管理器的默认特性是向每个需要重绘的窗口发送一条 WM_PAI
NT 。
当用户对窗口有操作时,WM会发送相应的消息给该窗口,窗口可通过回调函数根据消息直接对屏(没有用存储设备时)或对窗口的存储设备进行操作再拷贝到屏幕上,具体的消息说明可以参考emWin的中文手册。
WM_SetCallback
设置窗口的回调例程:
WM_CALLBACK*
WM_SetCallback
(WM_HWIN hWin, WM_CALLBACK* cb)
有了这个函数就可以动态的选择操作的重绘操作等消息的响应动作了。
WM_SetDesktopColor
设置桌面窗口的颜色:WGUI_COLOR
WM_SetDesktopColor(GUI_COLOR Color);
桌面窗口由视窗管理器自动创建,总是覆盖整个显示区域。它始终是一个最底层的窗口,没有定义其
他窗口,它就是默认活动窗口。所有窗口都是桌面窗口的继承窗口。桌面窗口的默认设置不用于自身
重新着色。如果不调用此函数,则桌面窗口不进行重绘;因此其它窗口将保持可见,即使在将它们删
除之后。一旦使用此函数指定了颜色,则桌面窗口将进行自身重新着色。为了恢复默认设置,请调用
此函数并指定GUI_IN
VALID_COLOR 。
对桌面窗口颜色设置后,需要调用WM_Exec(),通过执行回调函数重绘无效窗口(针对所有作业),这
样新的桌面窗口的颜色就会显现。
GUI_Exec【重要、重要,进行操作动作后,一般都要会通过一个GUI延时函数(
GUI_Delay
)来间接调用该函数,也可以单独建立一个任务来执行
GUI_Exec()函数
】
GUI_Exec()可以理解为GUI执行函数,调用了很多操作函数或发生了相关的动作,最后都需要通过
GUI_Exec()函数通过各个回调函数来一一执行,所以函数名叫
GUI_
Exec
此函数将自动重复调用WM_Exec1(),
直至完成所有作业 –
实质是直至返回0 值为止。建议调用函数GUI_Exec()作为代替。通常,此函数
无需由用户应用程序调用,
它自动由GUI_Delay() 调用,所以一般作业后都调用一个GUI_Delay(),使作业显现出来。如果使用的是多任务系统,
建议通过单独的任务执行此函数,如下所示:
void ExecIdleTask(void)
{
while(1) {
WM_Exec();//调用
WM_Exec()完成到显示屏的显示作业(我的理解是:(类似于)调用该函数前,其他的函数
执行绘制操作
,
WM_Exec
完成
将结果复制到显示器中
)
}
}
WM_InvalidateWindow:
调用此函数会告诉WM 指定的窗口未更新
WM_PAINT消息: 窗口变为无效并应重绘时,发送到窗口。
void WM_InvalidateWindow(WM_HWIN hWin);
WM_BringToTop:
将窗口放在其同属窗口前面 void WM_BringToTop(WM_HWIN hWin);该窗口将放置在其他所有同属窗口及父窗口的顶部,加入同属于A窗口的B、C两个子窗口,B先C后,则可以通过该函数将B又放在前面。
WM_BringToBottom:
窗口将放置在所有其他同属窗口的下面,但将留在其父窗口的前面。
void WM_BringToBottom(WM_HWIN hWin);
例:
WM_BringToBottom(_hWindow1);
GUIDEMO_Delay(SPEED);
WM_HideWindow:
使指定窗口不可见。
void WM_HideWindow(WM_HWIN hWin);调用此函数后,窗口不会立即“不可见”。在执行WM_Exec() 时,其它窗口的无效区域(出现在要隐藏窗口“后面”的区域)将重绘。隐藏父窗口时,父窗口上的子窗口也会消息。
WM_HideWindow(hChild2);
GUIDEMO_Delay(1000/3);
WM_ShowWindow:
使指定窗口显示。
WM_ShowWindow(hWindow1);
GUIDEMO_Delay(1000/3);
WM_GetInsideRect:
void WM_GetInsideRect(GUI_RECT* pRect);
返回客户区的坐标,该区域由活动小工具尺寸减去边界尺寸确定。此函数向活动窗口发送一条消息,检 索内部矩形。如果小工具不处理此消息(也即意味着小工具没有边界),则需使用 WM_GetClientRect函数计算出矩形。结果通过窗口坐标给出。也即, GUI_RECT结构中的 x0和y0相当于x 和y 的边界尺寸, x1和y1相当于窗口尺寸减去边界尺寸 -1。
客户区:一个窗口的客户区简单地说是它的可使用区。如果一个窗口包括一个边框或标题栏,则客户区是内部的矩形区域。如果没有这样一个
边框或标题栏
,则客户区等于窗口本身
WM_GetWindowSizeX/WM_GetWindowSizeY:
int WM_GetWindowSizeX
(WM_HWIN hWin)
...Y(WM_HWIN hWin)
返回窗口的水平尺寸(宽度) <
THE END
免责声明:本文为网友转载文章,转载此文目的在于传递更多信息,版权归原作者所有,与平台无关。本文所用视频、图片、文字如涉及作品版权问题,请联系小编微信(oneyac888)或者邮箱(guoyu.ou@oneyac.com)进行侵删。