>_<" 小工具和对话框的区别:
- 小工具可以创建并独立使用,因为它们本质上就是窗口。但是,通常需要使用对话框,它是包含一个或多个小工具的窗口。
- 对话框通常是一个窗口,它在出现时会要求用户输入信息。它可能包含多个小工具,要求用户根据各种选择来提供信息,或者以消息框的形式,仅提供信息 (比如向用户提供注意事项或警告)和一个“确定”按钮。
>_<" 对话框的基本原理:
输入焦点
窗口管理器能记住用户使用触摸屏、鼠标、键盘或用其他方式最终所选择的窗口或窗口对象。该窗口会收到键盘输入消息,即具有输入焦点。追踪输入焦点的主要原因是为了确定键盘命令的发送目的地。具有输入焦点的窗口会接收由键盘所生成的事件。如果要将对话框内的输入焦点移至下一个焦点对话框项目,可以使用GUI_KEY_TAB键。如果要向后移动,则可以使用GUI_KEY_BACKTAB。
阻塞式和非阻塞式对话框
对话框窗口可以分为阻塞式和非阻塞式。阻塞式对话框会阻塞执行的线程。默认情况下,它有输入焦点,用户必须先关闭它,线程才能继续执行。阻塞式对话框不会同时禁用所显示的其他对话框。换言之,阻塞式对话框并非模式对话框。如果对话框为阻塞式,则表示只有在对话框关闭后,所使用的函数 (GUI_ExecDialogBox()或GUI_ExecCreatedDialog())才会返回值。而非阻塞式对话框则不会阻塞调用的线程--在它为可见时,可允许任务继续运行。创建对话框后,函数会立即返回值。需要注意的是,切勿从回调函数中调用阻塞式函数。否则,可能会导致应用程序故障。
对话框过程函数
对话框就是一个窗口,它接收消息的方式与系统中其他所有窗口一样。大多数消息由对话框的窗口回调程序自动处理,而其他消息则传递到建立对话框时所指定的回调程序,这便称为对话框过程函数。
对话框消息
发送到对话框过程函数的两种附加消息为:WM_INIT_DIALOG和WM_NOTIFY_PARENT。在显示对话框前,WM_INIT_DIALOG消息会立即发送到对话框过程函数。对话框过程函数通常使用该消息来初始化小工具,并执行其他任何会影响对话框外观的初始化任务。 WM_NOTIFY_PARENT消息则通过对话框的子窗口发送到对话框,通知任何事件的父窗口以确保同步化。通过子窗口发送的事件取决于其类型,并针对每个类型的小工具单独记录。
>_<" 创建对话框需要两个基本要素:
资源表和对话框过程;前者定义所要包括的小工具,后者定义小工具的初始值及其行为。一旦具备这两个要素,则只需进行单个函数调用(GUI_CreateDialogBox()或GUI_ExecDialogBox())就能创建对话框。
aaarticlea/png;base64,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" alt="" width="240" height="307" />
/*********************************************************************
*
对话框可以基于阻塞(使用GUI_ExecDialogBox())或非阻塞(使用GUI_CreateDialogBox())
方式创建。必须首先定义一个资源表,以指定在对话框中所要包括的所有小工具。下面的示例说明了创
建资源表的方法:
对话框中所要包括的任何小工具都必须使用<WIDGET>_CreateIndirect()函数来间接创建。
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", , , , , , FRAMEWIN_CF_MOVEABLE, },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, , , , },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, , , , },
{ TEXT_CreateIndirect, "LText", , , , , , TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "RText", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, , , , , , },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT1, , , , , , },
{ TEXT_CreateIndirect, "Hex", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT2, , , , , , },
{ TEXT_CreateIndirect, "Bin", , , , , , TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT3, , , , },
{ LISTBOX_CreateIndirect, NULL, GUI_ID_LISTBOX0,, , , },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK0, , , , },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK1, , , , },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, , , , },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER1, , , , }
};
/*********************************************************************
*
对话框过程函数
上述示例使用如下所示的空白对话框过程函数创建。在创建任何对话框过程函数时,该基本模板都将
作为起始点:
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* MainTask
*/
void Fun(void) {
//对于该示例,对话框显示时会有下列代码行:
GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),&_cbCallback, , , );
}
/*
创建对话框后,所有资源表中的小工具都将可见。尽管这些小工具在上面的屏幕截图中可见,但它们
是以 “空”的形式出现的。这是因为对话框过程函数尚未包含初始化单个元素的代码。小工具的初始
值、由它们所引起的行为以及它们之间的交互作用都需要在对话框过程中进行定义。
*/