#2019.6.6
#EMWIN Learning… …(continue)
#一、GUIBulider的使用
##1.GUIBulider小工具的使用
#二、对话框
##1.对话框基本原理
###(1)输入焦点
窗口管理器可以记住用户使用触摸屏、鼠标、键盘或其他方式最终所选择的窗口或窗口对象。该窗口收到键盘输入消息,即具有输入焦点。追踪输入焦点的主要原因是为了确定键盘命令的发送目的地。
###(2)阻塞式和非阻塞式对话框
阻塞式对话框会阻塞执行的线程,默认情况下,它具有输入焦点,用户必须先关闭它,线程才能继续执行。
NOTE:切勿从回调函数中调用阻塞式函数,否则可能会导致应用程序故障!!
##2.对话框API函数
###(1)GUI_CreateDialogBox()
作用:创建非阻塞式对话框
原型:WM_HWIN GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO *paWidget, int NumWidgets, WM_CALLBACK *cb, WM_HWIN hParent, int x0, int y0);
参数:paWidget:定义对话框中所要包含的小工具的资源表的指针。
NumWidgets:对话框中所包含小工具的总数.
cb:应用程序特定的回调函数(对话框过程函数)的指针。
hParent:父窗口的句柄(0表示没有父窗口)
x0:对话框相对于父窗口的x轴位置。
y0:对话框相对于父窗口的y周位置
###(2)GUI_ExecCreatedDialog()
作用:执行已创建的对话框
###(3)GUI_ExecDialogBox()
作用:创建并执行对话框
###(4)GUI_EndDialog()
作用:结束对话框
#三、窗口小工具
小工具不是编写应用程序或用户界面必须的,但可以大大简化编程。
##1.小工具的一些基础知识
##2.通用控件API函数
#四、BUTTON控件
##1.综合实验过程
(1)WM_INIT_DLALOG消息,用来初始化对话框中的小工具。
(2)子控件向父控件发送的通知消息,在这个消息中。我们根据不同控件的不同消息类型做出不同的处理。
(3)小控件的通知代码被放到结构体WM_MESSAGE的变量data.v中,这里我们获取到BUTTOn按钮的通知代码,通过分析通知代码来判断BUTTON是被按下还是被释放了的。
(4)BUTTON按钮被释放了。
(5)控制LED、蜂鸣器的开关。
##2.BUTTON控件显示位图
(1)WM_PAINT消息,使用GUIBulider生成的C文件中没有这个消息,需要手动添加,当收到WM_PAINT消息的时候就将对话框的背景色刷新为白色。
(2)初始化BUTTON0的时候调用函数BUTTON_SetBitmapEx()在BUTTOn上显示位图OFF。
(3)初始化BUTTON1的时候调用函数BUTTON_SetB