emwin常用函数经验

每次改变颜色之后需要调用GUI_Clear();

输入焦点:该窗口会收到键盘输入消息,即具有输入焦点。追踪输入焦点的主要原因是为了

确定键盘命令的发送目的地。

xxxx_DefaultSkin();     //此函数用来设置各种小工具的皮肤。
WM_InvalidateWindow();  //使指定窗口无效,调用此函数会告诉 WM 指定的窗口未更新。
WM_SetStayOnTop();     //设置保持在顶部标记。
BUTTON_SetFocussable(); //设置接收输入焦点的能力。
BUTTON_SetBitmapEx();  //设置显示指定按钮时要使用的位图。
BUTTON_GetText();       //检索指定 BUTTON 小工具的文本
GUI_StoreKeyMsg();     //把消息数据 (Key, PressedCnt) 存进键盘缓冲器
WM_DisableWindow(); //断开窗口与其父窗口的关联。窗口管理器将不会重绘分离的窗口。
WM_EnableWindow();   //使能。

部分消息 Id(MsgId)   更多的查询手册P295页
WM_NOTIFY_PARENT 告知父窗口,其子窗口中发生了某些改变。
WM_KEY 按下某个键后发送到当前包含焦点的窗口。
WM_INIT_DIALOG 创建对话框后立即发送到对话框窗口。
WM_PAINT 窗口变为无效并应重绘时,发送到窗口。
WM_TOUCH_CHILD 指针输入设备已接触到子窗口时发送到父窗口。

自动使用存储设备
窗口管理器的默认特性是向每个需要重绘的窗口发送一条 WM_PAINT。这会导致闪变效应。为

抑制这些每个窗口的闪变效应, 可为重绘操作自动使用存储设备。 方法为, 在创建窗口时

设置标记 WM_CF_MEMDEV、使用函数 WM_SetCreateFlags() 设置默认创建标记,或使用函数

WM_EnableMemdev()。 WM 然后会将 WM_PAINT 消息输出重定向到存储设备中,再复制到显示

器中。如果整个窗口的内存不够,会自动使用分段。存储设备只是临时使用,在绘制操作完

成后会移除。更多详细信息,请参阅“存储设备”(第247 页) 。

阻塞式和非阻塞式对话框
对话框窗口可以分为阻塞式和非阻塞式。
阻塞式对话框会阻塞执行的线程。默认情况下,它有输入焦点,用户必须先关闭它,执行。

阻塞式对话框不会同时禁用所显示的其他对话框。换言之,阻塞式对话框并非如果对话框为

阻塞式,则表示只有在对话框关闭后,所使用的函数(GUI_ExecDialog或

GUI_ExecCreatedDialog())才会返回值。而非阻塞式对话框则不会阻塞调用的线程 -- 在它

为可见时,可允许任务继续运行。创建数会立即返回值。需要注意的是,切勿从回调函数中

调用阻塞式函数。否则,可能会导致应用程序故障。
创建并执行对话框函数GUI_ExecDialogBox()函数是创建对话框并且马上执行对话框的回调函

数,一直到该对话框的动作处理完成之后才返回。
 EndDialog(hDlg,0);关闭模态对话框,并且将参数作为父对话框调用的返回值。

如果需要数值显示
十进制  GUI_DispDec()
例如
GUI_GotoXY(10,10);// 设置当前 (X,Y) 位置。还有GUI_GotoX()和GUI_GotoY()
GUI_DispDec(1234,2);

GUI_DispDecAt()可以设置坐标。
GUI_DispDecMin()显示最少的字符。
GUI_DispDecShift()正负号、小数点


滑动条(SLIDER):
SLIDER_Create() 创建滑动条。
SLIDER_CreateIndirect() 从资源表条目创建滑动条。
SLIDER_Dec() 滑动条数值减 1。
SLIDER_GetValue() 返回滑动条当前数值。
SLIDER_Inc() 滑动条数值增 1。
SLIDER_SetRange() //设置滑动条数值范围。
SLIDER_SetValue() //设置滑动条当前数值。
SLIDER_SetWidth() //设置滑动条的宽度。


框架窗口(FRAMEWIN)
FRAMEWIN_CreateEx()  //创建一个FRAMEWIN小工具,倒数第四个参数设置是否可移动。
FRAMEWIN_SetMoveable()  //设置是否可以移动

FRAMEWIN API:     //手册P421
FRAMEWIN_AddButton() 在标题栏中添加一个按钮。
FRAMEWIN_AddCloseButton() 在标题栏中添加一个 “关闭”按钮。
FRAMEWIN_AddMaxButton() 在标题栏中添加一个 “最大化”按钮。
FRAMEWIN_AddMenu() 向框架窗口添加一个 “菜单”小工具。
FRAMEWIN_AddMinButton() 在标题栏中添加一个 “最小化”按钮。
…… ……
…… ……

在文本中“\”为文本换行符。


MESSAGEBOX小工具:
GUI_MessageBox() 创建并显示消息框。
MESSAGEBOX_Create() 创建消息框。

可设置成可移动的,和模态非模态的。
可设置大小和位置。
WM_GetWindowRectEx(hItem, &Rect);
WM_SetWindowPos(hItem, Rect.x0,
Rect.y0 + 10,
Rect.x1 - Rect.x0 + 1 + 30,
Rect.y1 - Rect.y0 + 1 + 5);
//
消息框的两种创建方法,一种是系统自带的,直接调用即可显示。另一种是用户的创建方式

,这种模式下用户可以自定义在消息框中要显示的内容。

  键盘反应:
如果小工具具有输入焦点,则它将对下列各键做出反应:
按键 反应
GUI_KEY_ENTER 此类键按下后,按钮认为它被按下并立即释放,然后作出相应反应。
GUI_KEY_SPACE 此类键按下后,按钮状态改变为已按下。键释放后,按钮状态改变为未按下



键盘输入  驱动层 API
键盘驱动层处理键盘消息函数。这些程序会在具体键 (或组合键)被按下或松开时通知窗口

管理器。
下表按字母顺序列出了驱动层键盘程序。详细描述如下。
GUI_StoreKeyMsg() 把消息存储于指定键。
GUI_SendKeyMsg() 把消息发送至指定键。
这两个函数可以下列命令存储和发出:
预定义的虚拟键码
GUI_KEY_BACKSPACE 退格键。
GUI_KEY_TAB 制表键。
GUI_KEY_ENTER 回车键。
GUI_KEY_LEFT 左箭头键。
GUI_KEY_UP 上箭头键。
GUI_KEY_RIGHT 右箭头键。
GUI_KEY_DOWN 下箭头键。
GUI_KEY_HOME 本位键 (移至当前行的开头
GUI_KEY_END 结束键 (移至当前行的末尾
GUI_KEY_SHIFT 换挡键。
GUI_KEY_CONTROL 控制键。
GUI_KEY_ESCAPE 换码键。
GUI_KEY_INSERT 插入键。
GUI_KEY_DELETE 删除键。


GUI_Exec【重要、重要,进行操作动作后,一般都要会通过一个GUI延时函数(GUI_Delay)

来间接调用该函数,也可以单独建立一个任务来执行GUI_Exec()函数】
   GUI_Exec()可以理解为GUI执行函数,调用了很多操作函数或发生了相关的动作,最后

都需要通过GUI_Exec()函数通过各个回调函数来一一执行,所以函数名叫GUI_Exec
   此函数将自动重复调用WM_Exec1(),直至完成所有作业 –  实质是直至返回0 值为止。

建议调用函数GUI_Exec()作为代替。通常,此函数无需由用户应用程序调用,它自动由

GUI_Delay() 调用,所以一般作业后都调用一个GUI_Delay(),使作业显现出来。如果使用的是

多任务系统,建议通过单独的任务执行此函数。

你可能感兴趣的:(stm32)