logo资料库

第13章-窗口对象(控件)(uCGUI中文手册).pdf

第1页 / 共84页
第2页 / 共84页
第3页 / 共84页
第4页 / 共84页
第5页 / 共84页
第6页 / 共84页
第7页 / 共84页
第8页 / 共84页
资料共84页,剩余部分请下载后查看
第13章 窗口对象(控件)
13.1 一些基础知识
有效的控件
理解重绘机制
如何使用控件
用于控件的动态存储器
3D 支持
13.2 通用控件 API 函数
API 参考:用于控件的 WM 函数
API 参考:所有控件共有的函数
_CreateIndirect()
WM_EnableWindow()
13.3 BUTTON:按钮控件
配置选项
BUTTON API 函数
BUTTON_Create()
BUTTON_CreateAsChild()
BUTTON_CreateIndirect()
BUTTON_SetBitmap()
BUTTON_SetBitmapEx()
BUTTON_SetBkColor()
BUTTON_SetFont()
BUTTON_SetState()
BUTTON_SetStreamedBitmap()
BUTTON_SetText()
BUTTON_SetTextColor()
范例
13.4 CHECKBOX:复选框控件
配置选项
复选框 API 函数
CHECKBOX_Check()
CHECKBOX_Create()
CHECKBOX_CreateIndirect()
CHECKBOX_IsChecked()
CHECKBOX_Uncheck()
13.5 EDIT:文本编辑框控件
配置选项
编辑框 API 函数
EDIT_AddKey()
EDIT_Create()
EDIT_CreateIndirect()
EDIT_GetDefaultFont()
EDIT_GetText()
EDIT_GetValue()
EDIT_SetBinMode()
EDIT_SetBkColor()
EDIT_SetDecMode()
EDIT_SetDefaultFont()
EDIT_SetDefaultTextAlign()
EDIT_SetFont()
EDIT_SetHexMode()
EDIT_SetMaxLen()
EDIT_SetText()
EDIT_SetTextAlign()
EDIT_SetTextColor()
EDIT_SetValue()
GUI_EditBin()
GUI_EditDec()
GUI_EditHex()
GUI_EditString()
范例
13.6 FRAMEWIN:框架窗口控件
配置选项
框架窗口API函数
FRAMEWIN_Create()
FRAMEWIN_CreateAsChild()
FRAMEWIN_CreateIndirect()
FRAMEWIN_GetDefaultBorderSize()
FRAMEWIN_GetDefaultCaptionSize()
FRAMEWIN_GetDefaultFont()
FRAMEWIN_SetActive()
FRAMEWIN_SetBarColor()
FRAMEWIN_SetClientColor()
FRAMEWIN_SetDefaultBarColor()
FRAMEWIN_SetDefaultBorderSize()
FRAMEWIN_SetDefaultCaptionSize()
FRAMEWIN_SetDefaultFont()
FRAMEWIN_SetFont()
FRAMEWIN_SetText()
FRAMEWIN_SetTextAlign()
FRAMEWIN_SetTextColor()
FRAMEWIN_SetTextPos()
范例
13.7 LISTBOX:列表框控件
配置选项
列表框API函数
LISTBOX_Create()
LISTBOX_CreateAsChild()
LISTBOX_CreateIndirect()
LISTBOX_DecSel()
LISTBOX_GetDefaultFont()
LISTBOX_GetSel()
LISTBOX_IncSel()
LISTBOX_SetBackColor()
LISTBOX_SetDefaultFont()
LISTBOX_SetFont()
LISTBOX_SetSel()
LISTBOX_SetTextColor()
范例
13.8 PROGBAR:进度条控件
配置选项
进度条API 函数
PROGBAR_Create()
PROGBAR_CreateIndirect()
PROGBAR_SetBarColor()
PROGBAR_SetFont()
PROGBAR_SetMinMax()
PROGBAR_SetText()
PROGBAR_SetTextAlign()
PROGBAR_SetTextPos()
PROGBAR_SetValue()
范例
13.9 RADIO:单选按钮控件
配置选项
单选按钮控件 API 函数
RADIO_Create()
RADIO_CreateIndirect()
RADIO_Dec()
RADIO_GetValue()
RADIO_Inc()
RADIO_SetValue()
13.10 SCROLLBAR:滚动条控件
配置选项
滚动条 API
SCROLLBAR_AddValue()
SCROLLBAR_Create()
SCROLLBAR_CreateAttached()
SCROLLBAR_CreateIndirect()
SCROLLBAR_Dec()
SCROLLBAR_GetValue()
SCROLLBAR_Inc()
SCROLLBAR_SetNumItems()
SCROLLBAR_SetPageSize()
SCROLLBAR_SetValue()
SCROLLBAR_SetWidth()
13.11 SLIDER:滑动条控件
配置选项
SLIDER API 函数
SLIDER_Create()
SLIDER_CreateIndirect()
SLIDER_Dec()
SLIDER_GetValue()
SLIDER_Inc()
SLIDER_SetRange()
SLIDER_SetValue()
SLIDER_SetWidth()
范例
13.12 TEXT:文本控件
配置选项
文本 API 函数
TEXT_Create()
TEXT_CreateInd irect()
TEXT_GetDefau ltFont()
TEXT_SetDefau ltFont()
TEXT_SetFont()
TEXT_SetText()
TEXT_SetTextAlign()
TEXT_SetTextPos()
第13章 窗口对象(控件) 控件是具有对象性质的窗口,在视窗世界中它们被称为控件,构造用户接口的元素。它 们能自动对某些事件起反应;例如,当一个按钮被按下时,它可能以不同的状态显示。控件 需要建立,具有能在它们存在的任何时间修改的特性,在它们不再需要时被删除。与窗口类 似,一个控件通过它的建立函数返回的句柄而引用。 控件需要使用视窗管理器。一旦一个控件被建立,它被处理成与其它窗口一样;WM 保 证它在需要的时候能正确的显示(及重绘)。当编写一个应用或一个用户接口时,控件并不需 要,但是它们能使编程更容易。 µC/GUI 中文手册 第 1 页
第 13 章 窗口对象(控件) 13.1 一些基础知识 有效的控件 下面的 µC/GUI 控件在当前是有效的: 名 称 说 明 BUTTON 可以按下的按钮。在按钮上可以显示文本或位图。 CHECKBOX 复选框,提供多个选项。 EDIT 单行文本编辑框,提示用户输入数字或文本。 FRAMEWIN 框架窗口,建立典型的 GUI 外形。 LISTBOX PROGBAR 列表框,当被选中的项目会高亮显示。 进度条,用于观察。 RADIOBUTTON 单选按钮,可以选择。同一时间只有一个按钮被选中。 SCROLLBAR 滚动条,可以是水平或垂直的。 SLIDER TEXT 滑动条,用于改变数值。 文本控件,典型应用在对话框中。 理解重绘机制 一个控件根据它的特性绘制自己。这一工作通过调用 WM 的 API 函数 WM_Exec()来完成。 如果在程序中没有调用 WM_Exec(),就必须调用 WM_Paint() 函数来绘制控件。在多任务环境 中的µC/GUI, 一个后台任务通常用于调用 WM_Exec() 并更新控件(及其它所有带有回调函数 的窗口)。这样就不必手工调用 WM_Paint();然而,手工调用仍然是合法的,如果你想保证控 件能立即被重绘的话,这样做也是有意义的。 当一个控件的属性被改变时,控件的窗口(或者它的一部分)被标记为无效,但是它不 会立即重绘。因此,这部分代码运行非常快。重绘在后面的时间通过 WM 完成,或通过为控件 调用 WM_Paint()函数(或者 WM_Exec(),直到所有的窗口都被重绘)来强制执行。 如何使用控件 假设我们要显示一个进度条。需要写以下的代码: PROGBAR_Handle hProgBar; GUI_DispStringAt(“Progress bar”, 100, 20); hProgBar = PROGBAR_Create(100, 40, 100, 20, WM_CF_SHOW); 第一行为控件的处理保留内存。最后一行实际建立控件。如果晚一些时候或在一个单独 第 2 页 µC/GUI 中文手册
第 13 章 窗口对象(控件) 任务中 WM_Exec()被调用的话,控件会被视窗管理器自动绘出。 对于每一种控件来说,成员函数是有效的,通过它们允许修改控件的外观。一旦控件被 建立,它的特性可以通过调用一个它的成员函数来改变。这些函数以控件的句柄作为它们的 第一个参数。为了建立一个进度条,上面显示 45%,并将其颜色从默认值(深灰/浅灰)改为 绿/红,要使用到以下部分代码: PROGBAR_SetBarColor(hProgBar, 0, GUI_GREEN); PROGBAR_SetBarColor(hProgBar, 1, GUI_RED); PROGBAR_SetValue(hProgBar, 45); 所有的控件也都有一个或多个配置宏,用于定义不同的默认设置,诸如字体和使用的颜 色等。在本章后面每个控件各自部分,对应的有效的配置选项都会列出来。 用于控件的动态存储器 在嵌入式应用当中,通常来说,使用动态存储器确实不是非常合适,因为存储残片效果 的缘故。有很多不同的方式可以用来这种情况,但是它们都工作在一个受限制的方式里,随 时内存区域都可能被应用程序中的一个指针引用。因为这个原因,µC/GUI 使用一个不同的方 法:所有物体(以及所有在运行时存储的数据)被存入一个句柄引用的内存区域当中。这会 使已分配好的内存区域在运行时重新分配成为可能。因而避免了使用指针时出现的长时间分 配的问题。所有控件因此通过句柄引用。 3D 支持 一些控件能够以 3D 或非 3D 效果显示。默认情况下是启用 3D 支持,但是也可能通过将配 置宏_USE_3D 设置为 0 而禁止它。不管它是否使用三维效果,一个控件的功能完全 一样的;唯一的不同是它的外观。下面是一个滑块控件的范例: µC/GUI 中文手册 第 3 页
第 13 章 窗口对象(控件) 启用 3D 效果(默认) 禁止 3D 效果 13.2 通用控件 API 函数 API 参考:用于控件的 WM 函数 既然控件本质上是一个窗口,那么任何一种视窗管理器 API 函数都适用于它们。控件的 句柄作为 hWin 参数,控件象其它窗口一样处理。最普遍用于控件的 WM 函数在下表列出: 函数 说明 WM_DeleteWindow() 删除一个窗口。 WM_DisableMemdev() 禁止存储设备的重绘功能。 WM_EnableMemdev() 启用存储设备的重绘功能。 WM_InvalidateWindow() 使一个窗口无效。 WM_Paint() 立即绘制或重绘一个窗口。 对于全部与 WM 相关的函数目录,请参阅第 12 章:视窗管理器。 API 参考:所有控件共有的函数 下表按字母顺序列出了与控件相关的函数。这些函数适用于所有的控件。在此列出是为 了避免重复。函数的详细描述的后面给出。每个控件附加的成员函数在后面部分可以找到。 函数 说明 _CreateIndirect() 在对话框中自动创建时使用。 WM_EnableWindow() 将控件状态设置为启用(默认)。 WM_DisableWindow() 将控件状态设置为禁止。 _CreateIndirect() 描述 建立一个用于对话框中的控件。 函数原型 第 4 页 µC/GUI 中文手册
第 13 章 窗口对象(控件) _Handle _CreateIndirect( const GUI_WIDGET_CREATE_INFO* pCreateInfo, WM_HWIN hParent, int x0, int y0, WM_CALLBACK* cb); 参 数 含 意 pCreateInfo 指向一个 GUI_WIDGET_CREATE_INFO 结构(下面提到)的指针。 hParent 父窗口的句柄。 x0 控件最左边的像素(桌面座标)。 附加信息 通过使用适当的前缀,任何控件都可能被间接的建立。 例如:BUTTON_CreateIndirect() 间接建立一个按钮控件,CHECKBOX_CreateIndirect() 间接建立一个复选框控件,等等。 如果一个控件包括在一个对话框当中,它只需要间接建立。否则,它可以通过使用 _Create()函数直接建立。更多关于对话框的信息,请参阅第 14 章:对话框。 资源表 对话框资源表中的 GUI_WIDGET_CREATE_INFO 结构定义如下: typedef struct { const char* pName; // 文本(不是所有的控件都使用) I16 Id; // 控件的窗口 ID I16 x0, y0, xSize, ySize; // 控件的大小和位置 I16 Flags; I32 Para; // 控件专用标识(或 0) // 控件专用参数(或 0) } GUI WIDGET CREATE INFO; GUI WIDGET CREATE FUNC* pfCreateIndirect; // 创建函数 控件标识和参数是可选的,这非常依赖于控件的类型。每个控件的标识和参数(如果存 在)会在本章后面的适当部分列出。 µC/GUI 中文手册 第 5 页
第 13 章 窗口对象(控件) WM_EnableWindow() 描述 将一个指定控件状态设置为激活(启用)。 函数原型 void WM_EnableWindow(WM_Handle hObj); 参 数 hObj 含 意 控件的句柄。 附加信息 对于任何控件来说,这是默认设置。 WM_DisableWindow() 描述 将一个指定的控件状态设置为非活动(无用)。 函数原型 void WM_DisableWindow(WM_Handle hObj); 参 数 hObj 含 意 控件的句柄。 附加信息 一个被禁止的控件以灰色显示,不会接收用户的输入。但其实际外观可以改变(根据 控 件/配置 的设置等等) 13.3 BUTTON:按钮控件 一般情况下,按钮控件作为触摸屏主要的用户接口部件使用。按钮可以显示文本,如下 面所示,或者一幅位图。 第 6 页 µC/GUI 中文手册
第 13 章 窗口对象(控件) 所有与按钮相关的函数仅次于文件 BUTTON* .c,BUTTON.h 当中。所有的标识是前 缀”BUTTON”。 配置选项 类型 宏 默认值 说明 N BUTTON_3D_MOVE_X N BUTTON_3D_MOVE_Y 1 1 按下状态文本/位图在水平方向 偏移的像素数。 按下状态文本/位图在垂直方向 偏移的像素数。 N N S N N B BUTTON_BKCOLOR0_DEFAULT 0xAAAAAA 非按下状态的背景颜色。 BUTTON_BKCOLOR1_DEFAULT GUI_WHITE 按下状态的背景颜色。 BUTTON_FONT_DEFAULT &GUI_Font13_1 按钮文本的字体。 BUTTON_TEXTCOLOR0_DEFAULT GUI_BLACK 非按下状态的文本颜色。 BUTTON_TEXTCOLOR1_DEFAULT GUI_BLACK 按下状态的文本颜色。 BUTTON_USE_3D 1 启用3D效果支持。 默认状态下按钮按下时背景色是白色,是特意这样做的,因为这会使按钮按下时在任何 显示屏上显示得更明显些。如果你想让按钮的背景色无论是按下还是不按下的状态下都是一 样的,需将 BUTTON_BKCOLOR1_DEFAULT 改为 BUTTON_BKCOLOR0_DEFAULT 。 BUTTON API 函数 下表按字母顺序列出了µC/GUI 与按钮有关的函数,详细的描述在本章后面部分绘出。 函数 说明 BUTTON_Create() 建立按钮。 BUTTON_CreateAsChild() 将按钮作为一个子窗口建立。 BUTTON_CreateIndirect() 从资源表项目中建立按钮。 BUTTON_SetBitmap() 设置按钮显示时使用的位图。 BUTTON_SetBitmapEx() 设置按钮显示时使用的位图。 BUTTON_SetBkColor() 设置按钮的背景颜色。 BUTTON_SetFont() BUTTON_SetState() 选择文本字体。 设置按钮状态(由触摸屏模块自动处理)。 BUTTON_SetStreamedBitmap() 设置按钮显示时使用的位图。 BUTTON_SetText() 设置文本。 BUTTON_SetTextColor() 设置文本的颜色。 µC/GUI 中文手册 第 7 页
第 13 章 窗口对象(控件) BUTTON_Create() 描述 在一个指定位置,以指定的大小建立一个 BUTTON 控件。 函数原型 BUTTON_Handle BUTTON_Create( int x0, int y0, int xsize, int ysize, int ID, int Flags); 含 意 按钮最左边的像素(在桌面座标中)。 按钮最顶部的像素(在桌面座标中)。 参 数 x0 y0 xsize 按钮的水平尺寸(以像素为单位)。 ysize 按钮的垂直尺寸(以像素为单位)。 ID 按钮按下时返回的 ID。 Flags 窗口建立标识。具有代表性的,WM_CF_SHOW 是为了使 控 件 立 即 可 见 ( 请 参 阅 第 12 章 ” 视 窗 管 理 器” 中 WM_CreateWindow()的参数值列表)。 返回数值 所建立的按钮控件的句柄,如果函数执行失败,则返回 0。 BUTTON_CreateAsChild() 描述 以子窗口的形式建立一个按钮。 函数原型 BUTTON_Handle BUTTON_CreateAsChild( int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int ID, 第 8 页 µC/GUI 中文手册
分享到:
收藏